Files
tripz/lib/views/home/map_widget.dart/form_search_places.dart
Hamza-Ayed 069ab52a83 8-28/1
2023-08-28 19:13:50 +03:00

152 lines
6.7 KiB
Dart

import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:ride/constant/table_names.dart';
import 'package:ride/views/widgets/elevated_btn.dart';
import '../../../constant/colors.dart';
import '../../../constant/style.dart';
import '../../../controller/functions/toast.dart';
import '../../../controller/home/map_page_controller.dart';
import '../../../main.dart';
GetBuilder<MapController> formSearchPlaces() {
// DbSql sql = DbSql.instance;
return GetBuilder<MapController>(
builder: (controller) => Column(
children: [
Padding(
padding: const EdgeInsets.all(16),
child: Container(
decoration:
const BoxDecoration(color: AppColor.secondaryColor),
child: TextField(
decoration: InputDecoration(
suffixIcon: const Icon(Icons.search),
hintText: 'Type here Place'.tr,
hintMaxLines: 1,
prefixIcon: IconButton(
onPressed: () {
controller.placeController.clear();
controller.clearPlaces();
},
icon: Icon(
Icons.clear,
color: Colors.red[300],
),
),
),
controller: controller.placeController,
onChanged: (value) {
if (controller.placeController.text.length > 5) {
controller.getPlaces();
controller.changeHeight();
}
},
// onEditingComplete: () => controller.changeHeight(),
),
),
),
Container(
height: controller.places.isNotEmpty ? controller.height : 0,
color: AppColor.secondaryColor,
child: ListView.builder(
itemCount: controller.places.length,
itemBuilder: (BuildContext context, int index) {
var res = controller.places[index];
return InkWell(
onTap: () {
controller.changeHeight();
Get.defaultDialog(
title:
'${'Are You sure to ride to'.tr} ${res['name']}',
middleText: '',
confirm: MyElevatedButton(
title: 'Confirm'.tr,
onPressed: () async {
controller.clearpolyline();
controller.data = [];
await controller.getMap(
'${controller.mylocation.latitude.toString()},${controller.mylocation.longitude.toString()}',
"${res['geometry']['location']['lat']},${res['geometry']['location']['lng']}");
controller.places = [];
controller.placeController.clear();
controller.showBottomSheet1();
Get.back();
controller.showBottomSheet1();
controller.changeMainBottomMenuMap();
}),
);
},
child: Padding(
padding: const EdgeInsets.symmetric(horizontal: 10),
child: Column(
children: [
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Column(
children: [
Image.network(
res['icon'],
width: 20,
),
IconButton(
onPressed: () async {
await sql.insertData({
'latitude': res['geometry']
['location']['lat'],
'longitude': res['geometry']
['location']['lng'],
'name': res['name'].toString(),
'rate': res['rating'].toString(),
}, TableName.placesFavorite);
Toast.show(
context,
'${res['name']} ${'Saved Sucssefully'.tr}',
AppColor.primaryColor);
},
icon: const Icon(Icons.favorite_border),
),
],
),
Column(
children: [
Text(
res['name'].toString(),
style: AppStyle.title,
),
Text(
res['vicinity'].toString(),
style: AppStyle.subtitle,
),
],
),
Column(
children: [
Text(
'rate',
style: AppStyle.subtitle,
),
Text(
res['rating'].toString(),
style: AppStyle.subtitle,
),
],
),
],
),
const Divider(
thickness: 1,
)
],
),
),
);
},
),
)
],
));
}