From 2820eceee0a975bf1a83ebdf3d97dd814362e13a Mon Sep 17 00:00:00 2001 From: Hamza-Ayed Date: Tue, 6 Feb 2024 14:10:54 +0300 Subject: [PATCH] 2/6/4 --- lib/controller/functions/tts.dart | 43 ++++++++++++------- .../home/map_passenger_controller.dart | 15 +++---- lib/main.dart | 2 + .../form_search_places_destenation.dart | 2 +- .../map_widget.dart/left_main_menu_icons.dart | 7 +-- .../map_widget.dart/main_bottom_Menu_map.dart | 2 + 6 files changed, 44 insertions(+), 27 deletions(-) diff --git a/lib/controller/functions/tts.dart b/lib/controller/functions/tts.dart index bdcf7cd..ecad01c 100644 --- a/lib/controller/functions/tts.dart +++ b/lib/controller/functions/tts.dart @@ -1,25 +1,38 @@ import 'package:flutter_tts/flutter_tts.dart'; +import 'package:get/get.dart'; -class TextToSpeech { - final FlutterTts tts = FlutterTts(); +class TextToSpeechController extends GetxController { + final flutterTts = FlutterTts(); - // Initialize the TTS engine with desired settings - Future initTts() async { - await tts.setLanguage('en-US'); // Set language - await tts.setSpeechRate(0.8); // Adjust speech rate - await tts.setVolume(1.0); // Set volume + // Initialize TTS in initState + @override + void onInit() { + super.onInit(); + initTts(); } - // Speak the given text - Future speakText(String text) async { - await tts.speak(text); + // Dispose of TTS when controller is closed + @override + void onClose() { + super.onClose(); + flutterTts.completionHandler; } - // Stop speaking - Future stopSpeaking() async { - await tts.stop(); + // Function to initialize TTS engine + Future initTts() async { + await flutterTts.setLanguage('en-US'); // Set language + await flutterTts.setSpeechRate(0.5); // Adjust speech rate + await flutterTts.setVolume(1.0); // Set volume } - // Check if TTS is currently speaking - // bool isSpeaking() => tts.isSpeaking; + // Function to speak the given text + Future speakText(String text) async { + try { + await flutterTts.speak(text); + } catch (error) { + // Handle error gracefully, e.g., show a message + Get.snackbar('Error', 'Failed to speak text: $error'); + print('Failed to speak text: $error'); + } + } } diff --git a/lib/controller/home/map_passenger_controller.dart b/lib/controller/home/map_passenger_controller.dart index 49d60d0..91475ca 100644 --- a/lib/controller/home/map_passenger_controller.dart +++ b/lib/controller/home/map_passenger_controller.dart @@ -20,7 +20,6 @@ import '../../constant/info.dart'; import '../../constant/links.dart'; import '../../main.dart'; import '../../models/model/locations.dart'; -import '../../views/Rate/rate_captain.dart'; import '../../views/widgets/elevated_btn.dart'; import '../firebase/firbase_messge.dart'; import '../functions/crud.dart'; @@ -166,7 +165,7 @@ class MapPassengerController extends GetxController { List hintTextwayPointStringAll = []; var placesCoordinate = []; String hintTextDestinationPoint = 'Select your destination'.tr; - late String rideId; + late String rideId = 'yet'; bool noCarString = false; bool isCashSelectedBeforeConfirmRide = false; bool isPassengerChosen = false; @@ -953,7 +952,7 @@ class MapPassengerController extends GetxController { isMarkersShown = false; // totalStepDurations = 0; timeToPassengerFromDriverAfterApplied = 0; - if (rideId != '') { + if (rideId != 'yet') { await CRUD().post(link: AppLink.updateDriverOrder, payload: { "order_id": rideId.toString(), // Convert to String "status": 'Cancel' @@ -1267,7 +1266,7 @@ class MapPassengerController extends GetxController { } // Configure location accuracy - LocationAccuracy desiredAccuracy = LocationAccuracy.high; + // LocationAccuracy desiredAccuracy = LocationAccuracy.high; // Get the current location LocationData _locationData = await location.getLocation(); @@ -1871,18 +1870,18 @@ class MapPassengerController extends GetxController { update(); } - initilizeGetStorage() { - if (box.read(BoxName.addWork).toString() == '') { + initilizeGetStorage() async { + if (box.read(BoxName.addWork) == null) { box.write(BoxName.addWork, 'addWork'); } - if (box.read(BoxName.addHome).toString() == '') { + if (box.read(BoxName.addHome) == null) { box.write(BoxName.addHome, 'addHome'); } } @override void onInit() async { - mapAPIKEY = await storage.read(key: BoxName.mapAPIKEY); + // mapAPIKEY = await storage.read(key: BoxName.mapAPIKEY); readyWayPoints(); await getLocation(); await addToken(); diff --git a/lib/main.dart b/lib/main.dart index 2f6bef4..e53c2a9 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -8,6 +8,7 @@ import 'package:flutter_stripe/flutter_stripe.dart'; import 'package:get/get.dart'; import 'package:get_storage/get_storage.dart'; import 'package:flutter/services.dart'; +import 'package:ride/controller/home/map_passenger_controller.dart'; import 'constant/api_key.dart'; import 'constant/credential.dart'; @@ -59,6 +60,7 @@ void main() async { DeviceOrientation.portraitDown, ]); } + // MapPassengerController().initilizeGetStorage(); runApp(const MyApp()); } diff --git a/lib/views/home/map_widget.dart/form_search_places_destenation.dart b/lib/views/home/map_widget.dart/form_search_places_destenation.dart index 7f59057..92ad945 100644 --- a/lib/views/home/map_widget.dart/form_search_places_destenation.dart +++ b/lib/views/home/map_widget.dart/form_search_places_destenation.dart @@ -212,7 +212,7 @@ GetBuilder formSearchPlacesDestenation() { color: AppColor.greenColor.withOpacity(.4), border: Border.all()), child: Text( - 'Work : ${box.read(BoxName.addWork) == 'addWork' ? 'Add Work' : box.read(BoxName.addWork).toString().split(',')[0] + box.read(BoxName.addWork).toString().split(',')[1]} '), + 'Work : ${box.read(BoxName.addWork).toString() == 'addWork' ? 'Add Work' : box.read(BoxName.addWork).toString().split(',')[0] + box.read(BoxName.addWork).toString().split(',')[1]} '), ), ), InkWell( diff --git a/lib/views/home/map_widget.dart/left_main_menu_icons.dart b/lib/views/home/map_widget.dart/left_main_menu_icons.dart index b9f13d8..728d49a 100644 --- a/lib/views/home/map_widget.dart/left_main_menu_icons.dart +++ b/lib/views/home/map_widget.dart/left_main_menu_icons.dart @@ -3,12 +3,15 @@ import 'dart:io'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:google_maps_flutter/google_maps_flutter.dart'; +import 'package:ride/constant/box_name.dart'; +import 'package:ride/main.dart'; import '../../../constant/colors.dart'; import '../../../controller/functions/tts.dart'; import '../../../controller/home/map_passenger_controller.dart'; GetBuilder leftMainMenuIcons() { + final textToSpeechController = Get.put(TextToSpeechController()); return GetBuilder( builder: (controller) => Positioned( top: 85, @@ -87,9 +90,7 @@ GetBuilder leftMainMenuIcons() { borderRadius: BorderRadius.circular(15)), child: IconButton( onPressed: () { - final _textToSpeech = TextToSpeech(); - _textToSpeech.initTts(); - _textToSpeech.speakText("Hello, world!"); + textToSpeechController.speakText('''hello this is hamza'''); }, icon: const Icon( Icons.voice_chat, diff --git a/lib/views/home/map_widget.dart/main_bottom_Menu_map.dart b/lib/views/home/map_widget.dart/main_bottom_Menu_map.dart index 8d508d7..25842a5 100644 --- a/lib/views/home/map_widget.dart/main_bottom_Menu_map.dart +++ b/lib/views/home/map_widget.dart/main_bottom_Menu_map.dart @@ -163,6 +163,8 @@ class MainBottomMenuMap extends StatelessWidget { onPressed: () { controller .changeMainBottomMenuMap(); + // controller + // .initilizeGetStorage(); }, icon: controller.isMainBottomMenuMap