Files
tripz/lib/views/home/map_widget.dart/select_driver_mishwari.dart
Hamza-Ayed 485928d8c1 7/21/2
2024-07-21 09:48:56 +03:00

286 lines
10 KiB
Dart

import 'package:SEFER/constant/style.dart';
import 'package:SEFER/controller/home/map_passenger_controller.dart';
import 'package:SEFER/views/widgets/elevated_btn.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_local_notifications/flutter_local_notifications.dart';
import 'package:get/get.dart';
import '../../../constant/api_key.dart';
class CupertinoDriverListWidget extends StatelessWidget {
final List drivers;
const CupertinoDriverListWidget({super.key, required this.drivers});
@override
Widget build(BuildContext context) {
return CupertinoPageScaffold(
navigationBar: CupertinoNavigationBar(
middle: Text('Driver List'.tr),
),
child: SafeArea(
child: ListView.separated(
itemCount: drivers.length,
separatorBuilder: (context, index) => const Divider(height: 1),
itemBuilder: (context, index) {
var driver = drivers[index];
return Container(
decoration: AppStyle.boxDecoration1,
child: CupertinoListTile(
padding: const EdgeInsets.symmetric(vertical: 4, horizontal: 8),
leading: CircleAvatar(
radius: 25,
backgroundImage: NetworkImage(
'${AK.serverPHP}/portrate_captain_image/${driver['id']}.jpg',
),
backgroundColor: CupertinoColors.systemGrey5,
),
title: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text(
'${driver['NAME'].toString().split(' ')[0]} ${driver['NAME'].toString().split(' ')[1]}',
style: const TextStyle(fontWeight: FontWeight.bold),
),
Text('${'Age'.tr}: ${driver['age'].toString()}'),
Row(
children: [
const Icon(CupertinoIcons.star_fill,
size: 16, color: CupertinoColors.systemYellow),
const SizedBox(width: 4),
Text(driver['rating']?.toStringAsFixed(1) ?? 'N/A'.tr),
const SizedBox(width: 8),
Text('${'Rides'.tr}: ${driver['countRide']}'),
],
),
],
),
subtitle: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text(
'${'Car'.tr}: ${driver['make']} ${driver['model']} (${driver['year']})'),
Text('${'Plate'.tr}: ${driver['car_plate']}'),
],
),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text('${'Education'.tr}: ${driver['education']}'),
],
),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
SizedBox(
// width: Get.width * .3,
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text('${'Color'.tr}: ${driver['color']}'),
const SizedBox(width: 8),
Container(
width: 20,
height: 20,
decoration: BoxDecoration(
color:
hexToColor(driver['color_hex'].toString()),
borderRadius: BorderRadius.circular(4),
border: Border.all(),
),
),
],
),
),
],
),
],
),
onTap: () {
// Handle driver selection
Get.defaultDialog(
title: '${'Selected driver'.tr}: ${driver['NAME']}',
content: Column(
children: [
Column(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text(
'${'Car'.tr}: ${driver['make']} ${driver['model']} (${driver['year']})'),
Text('${'Plate'.tr}: ${driver['car_plate']}'),
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text('${'Color'.tr}: ${driver['color']}'),
const SizedBox(width: 8),
Container(
width: 20,
height: 20,
decoration: BoxDecoration(
color: hexToColor(
driver['color_hex'].toString()),
borderRadius: BorderRadius.circular(4),
border: Border.all(),
),
),
],
),
],
),
],
),
confirm: MyElevatedButton(
title: 'OK'.tr,
onPressed: () {
Get.back();
showDateTimePickerDialog();
}));
print('${'Selected driver'.tr}: ${driver['NAME']}');
// Get.back(); // Close the dialog
},
),
);
},
)),
);
}
Color hexToColor(String hexColor) {
hexColor = hexColor.replaceAll("#", "");
String colorString = "ff$hexColor";
return Color(int.parse(colorString, radix: 16));
}
void showDriverSelectionDialog(Map<String, dynamic> driver) {
Get.defaultDialog(
title: '${'Selected driver'.tr}: ${driver['name']}',
content: Column(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text(
'${'Car'.tr}: ${driver['make']} ${driver['model']} (${driver['year']})'),
Text('${'Plate'.tr}: ${driver['car_plate']}'),
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text('${'Color'.tr}: ${driver['color']}'),
const SizedBox(width: 8),
Container(
width: 20,
height: 20,
decoration: BoxDecoration(
color: hexToColor(driver['color_hex'].toString()),
borderRadius: BorderRadius.circular(4),
border: Border.all(),
),
),
],
),
],
),
confirm: MyElevatedButton(
title: 'OK'.tr,
onPressed: () {
Get.back();
showDateTimePickerDialog();
},
),
);
}
void showDateTimePickerDialog() {
DateTime selectedDateTime = DateTime.now();
Get.defaultDialog(
barrierDismissible: false,
title: 'select date and time of trip'.tr,
content: SizedBox(
// height: 400, // Adjust height as needed
width: double.maxFinite,
child: Column(
children: [
DateTimePickerWidget(),
],
),
),
confirm: MyElevatedButton(
title: 'Confirm Trip'.tr,
onPressed: () async {
DateTime selectedDateTime =
Get.find<MapPassengerController>().selectedDateTime.value;
// Save trip data and set up notifications
// await Get.find<MapPassengerController>().saveTripData(driver, selectedDateTime);
Get.back();
},
),
);
}
}
class DateTimePickerWidget extends StatelessWidget {
final MapPassengerController controller = Get.put(MapPassengerController());
@override
Widget build(BuildContext context) {
return CupertinoPageScaffold(
navigationBar: const CupertinoNavigationBar(
transitionBetweenRoutes: false,
automaticallyImplyLeading: false,
middle: Text('Date and Time Picker'),
),
child: SafeArea(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Obx(() => Text(
'${'Selected Date and Time'.tr}: ${controller.selectedDateTime.value}',
style: const TextStyle(fontSize: 18),
textAlign: TextAlign.center,
)),
const SizedBox(height: 20),
SizedBox(
height: 200,
child: CupertinoDatePicker(
mode: CupertinoDatePickerMode.dateAndTime,
initialDateTime: controller.selectedDateTime.value,
onDateTimeChanged: (newDateTime) {
controller.updateDateTime(newDateTime);
},
),
),
],
),
),
);
}
}
// Future<void> setLocalNotification(DateTime tripDateTime) async {
// FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin =
// FlutterLocalNotificationsPlugin();
// var androidPlatformChannelSpecifics = const AndroidNotificationDetails(
// 'trip_reminder_channel',
// 'Trip Reminders',
// importance: Importance.max,
// priority: Priority.high,
// );
// var iOSPlatformChannelSpecifics = IOSNotificationDetails();
// var platformChannelSpecifics = NotificationDetails(
// android: androidPlatformChannelSpecifics,
// iOS: iOSPlatformChannelSpecifics,
// );
// await flutterLocalNotificationsPlugin.schedule(
// 0,
// 'Trip Reminder'.tr,
// 'Your trip is scheduled in 30 minutes'.tr,
// tripDateTime.subtract(const Duration(minutes: 30)),
// platformChannelSpecifics,
// );
// }