This commit is contained in:
Hamza-Ayed
2024-08-06 16:56:36 +03:00
parent 3caa1ef1f0
commit 46f11d5991
9 changed files with 368 additions and 191 deletions

View File

@@ -90,7 +90,7 @@ class HomePage extends StatelessWidget {
);
}),
subtitle: Text(
'You can change the Vibration for all butttons'.tr,
"You can change the vibration feedback for all buttons".tr,
style: AppStyle.title,
),
onTap: () => Get.to(() => const FrequentlyQuestionsPage()),

View File

@@ -11,6 +11,7 @@ import 'package:get/get.dart';
import '../../../constant/info.dart';
import '../../../controller/functions/tts.dart';
import '../../../controller/home/map_passenger_controller.dart';
import '../../../print.dart';
class CarType {
final String carType;
@@ -295,6 +296,8 @@ class CarDetailsTypeToChoose extends StatelessWidget {
mapPassengerController.totalPassenger =
mapPassengerController
.totalPassengerComfort;
Log.print(
'mapPassengerController.endNameAddress: ${mapPassengerController.endNameAddress}');
Get.defaultDialog(
title: 'Comfort'.tr,
titleStyle: AppStyle.title,
@@ -302,8 +305,13 @@ class CarDetailsTypeToChoose extends StatelessWidget {
textToSpeechController:
textToSpeechController,
image: 'assets/images/blob.png',
text:
'Best choice for comfort car and flexible route and stops point'
text: mapPassengerController
.endNameAddress
.toLowerCase()
.contains("airport".tr)
? "Best choice for a comfortable car with a flexible route and stop points. This airport offers visa entry at this price."
.tr
: 'Best choice for comfort car and flexible route and stops point'
.tr),
confirm: MyElevatedButton(
kolor: AppColor.greenColor,
@@ -602,7 +610,7 @@ class HeaderDestination extends StatelessWidget {
// mapPassengerController.cancelRide();
// });
MyDialog().getDialog(
'Change Ride'.tr,
"Change Route".tr,
'You can change the destination by long-pressing any point on the map'
.tr, () {
Get.back();

View File

@@ -1,15 +1,9 @@
import 'package:SEFER/constant/box_name.dart';
import 'package:SEFER/views/auth/sms_verfy_page.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';
import '../../../constant/char_map.dart';
import '../../../constant/colors.dart';
import '../../../constant/credential.dart';
import '../../../controller/firebase/firbase_messge.dart';
import '../../../controller/functions/tts.dart';
import '../../../controller/home/map_passenger_controller.dart';
import '../../../main.dart';
GetBuilder<MapPassengerController> leftMainMenuIcons() {
final textToSpeechController = Get.put(TextToSpeechController());
@@ -104,32 +98,32 @@ GetBuilder<MapPassengerController> leftMainMenuIcons() {
// ),
// ),
// ),
AnimatedContainer(
duration: const Duration(microseconds: 200),
width: controller.widthMapTypeAndTraffic,
decoration: BoxDecoration(
color: AppColor.secondaryColor,
border: Border.all(),
borderRadius: BorderRadius.circular(15)),
child: IconButton(
onPressed: () async {
FirebaseMessagesController().sendNotificationToDriverMAP(
'',
'from: ',
// jsonDecode(value)['message'].toString(),
'cXavJMQgRACEfYdOnSLDU4:APA91bE_7aB5kLUcCgolp6BTy3girf7NCxR49dRt9wMDCu3C3td9V-KwZqsbJvYyIqgkI9oxZCiqyVv9ZnVG7rN0LBf7Nxe9AEcatgHNo0fEomaMWB3ff_SagtNkUuYeHc-GaPETq6Oa',
[],
'order.wav'
// AnimatedContainer(
// duration: const Duration(microseconds: 200),
// width: controller.widthMapTypeAndTraffic,
// decoration: BoxDecoration(
// color: AppColor.secondaryColor,
// border: Border.all(),
// borderRadius: BorderRadius.circular(15)),
// child: IconButton(
// onPressed: () async {
// FirebaseMessagesController().sendNotificationToDriverMAP(
// '',
// 'from: ',
// // jsonDecode(value)['message'].toString(),
// 'cXavJMQgRACEfYdOnSLDU4:-KwZqsbJvYyIqgkI9oxZCiqyVv9ZnVG7rN0LBf7Nxe9AEcatgHNo0fEomaMWB3ff_SagtNkUuYeHc-GaPETq6Oa',
// [],
// 'order.wav'
// polylineCoordinates.toString()
);
},
icon: const Icon(
Icons.chat,
size: 29,
),
),
),
// // polylineCoordinates.toString()
// );
// },
// icon: const Icon(
// Icons.chat,
// size: 29,
// ),
// ),
// ),
// AnimatedContainer(
// duration: const Duration(microseconds: 200),
// width: controller.widthMapTypeAndTraffic,

View File

@@ -1,20 +1,17 @@
import 'package:SEFER/constant/box_name.dart';
import 'package:SEFER/constant/style.dart';
import 'package:SEFER/main.dart';
import 'package:flutter/material.dart';
import 'package:flutter/cupertino.dart';
import 'package:get/get.dart';
import 'package:get_storage/get_storage.dart';
import '../../constant/colors.dart';
import 'package:SEFER/constant/box_name.dart';
class MyTextForm extends StatelessWidget {
const MyTextForm({
super.key,
Key? key,
required this.controller,
required this.label,
required this.hint,
required this.type,
});
}) : super(key: key);
final TextEditingController controller;
final String label, hint;
final TextInputType type;
@@ -25,50 +22,73 @@ class MyTextForm extends StatelessWidget {
padding: const EdgeInsets.only(bottom: 10),
child: SizedBox(
width: Get.width * .8,
child: TextFormField(
keyboardType: type,
cursorColor: AppColor.accentColor,
controller: controller,
decoration: InputDecoration(
focusedBorder: OutlineInputBorder(
borderSide: const BorderSide(
color: AppColor.primaryColor,
width: 2.0,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
label.tr,
style: TextStyle(
color: CupertinoColors.label,
fontSize: 16,
fontWeight: FontWeight.w600,
),
borderRadius: BorderRadius.circular(10),
),
focusColor: AppColor.accentColor,
fillColor: AppColor.accentColor,
border: const OutlineInputBorder(
borderRadius: BorderRadius.all(Radius.circular(12))),
labelText: label.tr,
hintText: hint.tr,
hintStyle: AppStyle.title,
labelStyle: AppStyle.title,
),
validator: (value) {
if (value!.isEmpty) {
return '${'Please enter'.tr} $label.'.tr;
}
if (type == TextInputType.emailAddress) {
if (!value.contains('@')) {
return 'Please enter a valid email.'.tr;
}
} else if (type == TextInputType.phone) {
if (box.read(BoxName.countryCode) == 'Egypt') {
if (value.length != 11) {
return 'Please enter a valid phone number.'.tr;
}
} else if (value.length != 10) {
return 'Please enter a valid phone number.'.tr;
}
}
return null;
},
const SizedBox(height: 8),
CupertinoTextField(
controller: controller,
keyboardType: type,
placeholder: hint.tr,
padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 12),
decoration: BoxDecoration(
color: CupertinoColors.systemBackground,
border: Border.all(color: CupertinoColors.systemGrey4),
borderRadius: BorderRadius.circular(8),
),
style: const TextStyle(color: CupertinoColors.label),
placeholderStyle:
const TextStyle(color: CupertinoColors.placeholderText),
),
const SizedBox(height: 4),
ValueListenableBuilder<TextEditingValue>(
valueListenable: controller,
builder: (context, value, child) {
String? errorText = _getErrorText(value.text);
return errorText != null
? Text(
errorText,
style: const TextStyle(
color: CupertinoColors.destructiveRed,
fontSize: 12),
)
: const SizedBox.shrink();
},
),
],
),
),
);
}
String? _getErrorText(String value) {
if (value.isEmpty) {
return '${'Please enter'.tr} $label'.tr;
}
if (type == TextInputType.emailAddress) {
if (!value.contains('@')) {
return 'Please enter a valid email.'.tr;
}
} else if (type == TextInputType.phone) {
final box = GetStorage();
if (box.read(BoxName.countryCode) == 'Egypt') {
if (value.length != 11) {
return 'Please enter a valid phone number.'.tr;
}
} else if (value.length != 10) {
return 'Please enter a valid phone number.'.tr;
}
}
return null;
}
}