diff --git a/assets/gif/robot-idle.gif b/assets/gif/robot-idle.gif deleted file mode 100644 index 89dee325..00000000 Binary files a/assets/gif/robot-idle.gif and /dev/null differ diff --git a/assets/gif/robot-speaking.gif b/assets/gif/robot-speaking.gif deleted file mode 100644 index 253d786b..00000000 Binary files a/assets/gif/robot-speaking.gif and /dev/null differ diff --git a/lib/config/config.dart b/lib/config/config.dart index a911598e..394eecad 100644 --- a/lib/config/config.dart +++ b/lib/config/config.dart @@ -6,8 +6,8 @@ import 'package:diplomaticquarterapp/widgets/mobile-no/mobile_no.dart'; const MAX_SMALL_SCREEN = 660; -const BASE_URL = 'https://uat.hmgwebservices.com/'; -// const BASE_URL = 'https://hmgwebservices.com/'; +//const BASE_URL = 'https://uat.hmgwebservices.com/'; + const BASE_URL = 'https://hmgwebservices.com/'; const GET_PROJECT = 'Services/Lists.svc/REST/GetProject'; //weather diff --git a/lib/pages/AlHabibMedicalService/all_habib_medical_service_page.dart b/lib/pages/AlHabibMedicalService/all_habib_medical_service_page.dart index 77d536e1..143b6435 100644 --- a/lib/pages/AlHabibMedicalService/all_habib_medical_service_page.dart +++ b/lib/pages/AlHabibMedicalService/all_habib_medical_service_page.dart @@ -385,6 +385,6 @@ class _AllHabibMedicalServiceState extends State { } var data = await this.sharedPref.getObject(WEATHER); weather = data['Temperature'].toString() + '\u2103' ?? '--'; - print(data); + } } diff --git a/lib/pages/AlHabibMedicalService/health-weather/health-weather-indicator.dart b/lib/pages/AlHabibMedicalService/health-weather/health-weather-indicator.dart index 98aba205..19974e0e 100644 --- a/lib/pages/AlHabibMedicalService/health-weather/health-weather-indicator.dart +++ b/lib/pages/AlHabibMedicalService/health-weather/health-weather-indicator.dart @@ -1,8 +1,11 @@ +import 'package:diplomaticquarterapp/config/shared_pref_kay.dart'; import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart'; import 'package:diplomaticquarterapp/core/viewModels/weather/weather_view_model.dart'; import 'package:diplomaticquarterapp/pages/base/base_view.dart'; +import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart'; import 'package:diplomaticquarterapp/uitl/location_util.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; +import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:diplomaticquarterapp/widgets/text/app_texts_widget.dart'; import 'package:diplomaticquarterapp/widgets/weather_slider/weather_slider.dart'; @@ -18,7 +21,9 @@ class HealthWeatherIndicator extends StatefulWidget { class _HospitalsPageState extends State { var data; + AppSharedPreferences sharedPref = AppSharedPreferences(); LocationUtils locationUtils; + var weather = '--'; @override void initState() { locationUtils = @@ -40,6 +45,68 @@ class _HospitalsPageState extends State { baseViewModel: mode, body: mode.weatherIndicatorData.length>0 ? SingleChildScrollView( child: Column(children: [ + Container( + margin: EdgeInsets.all(8), + width: double.infinity, + height: 150, + decoration: BoxDecoration( + image: DecorationImage( + image: ExactAssetImage('assets/images/Weather_img.png'), + fit: BoxFit.cover, + ), + borderRadius: BorderRadius.circular(8.0)), + child: Padding( + padding: EdgeInsets.symmetric(horizontal: 10.0), + child: Row( + children: [ + Expanded( + flex: 3, + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Texts( + TranslationBase.of(context) + .healthWeatherIndicators, + color: Colors.white, + fontWeight: FontWeight.w600, + ), + Texts( + TranslationBase.of(context) + .healthTipsBasedOnCurrentWeather, + color: Colors.white, + fontSize: 14, + ), + ], + )), + Expanded( + flex: 2, + child: InkWell( + onTap: () { + + }, + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Image.asset( + 'assets/images/Weather_ico.png', + width: 60, + height: 60, + ), + AppText(weather, + fontSize: 22, color: Colors.white) + ], + ), + ], + )), + ) + ], + ), + ), + ), Padding(padding: EdgeInsets.all(15), child:AppText( projectViewModel.isArabic ? mode.weatherIndicatorData[0].cityNameN : mode.weatherIndicatorData[0].cityName, fontSize: 24, fontWeight: FontWeight.bold,)), Padding( padding: EdgeInsets.all(15), @@ -53,4 +120,8 @@ class _HospitalsPageState extends State { ))])) : Container(child:AppText('Loading...'))), ); } + getWeather() async{ + var data = await this.sharedPref.getObject(WEATHER); + weather = data['Temperature'].toString() + '\u2103' ?? '--'; + } } diff --git a/lib/widgets/others/app_scaffold_widget.dart b/lib/widgets/others/app_scaffold_widget.dart index 976b28e1..4691332d 100644 --- a/lib/widgets/others/app_scaffold_widget.dart +++ b/lib/widgets/others/app_scaffold_widget.dart @@ -12,8 +12,6 @@ import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; import 'package:diplomaticquarterapp/widgets/others/bottom_bar.dart'; import 'package:diplomaticquarterapp/widgets/progress_indicator/app_loader_widget.dart'; import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart'; -import 'package:diplomaticquarterapp/widgets/robo-search/robosearch.dart'; -import 'package:diplomaticquarterapp/widgets/robo-search/search.dart'; import 'package:flutter/material.dart'; import 'package:flutter_svg/flutter_svg.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; @@ -137,10 +135,10 @@ class AppScaffold extends StatelessWidget { ) : buildBodyWidget(), bottomSheet: bottomSheet, - //floatingActionButton: floatingActionButton ?? floatingActionButton, + // floatingActionButton: floatingActionButton ?? floatingActionButton, // bottomNavigationBar: // this.isBottomBar == true ? BottomBarSearch() : SizedBox() - // floatingActionButton: FloatingSearchButton(), + floatingActionButton: FloatingSearchButton(), ); } diff --git a/lib/widgets/others/bottom_bar.dart b/lib/widgets/others/bottom_bar.dart index 4de9efdf..0615a7c8 100644 --- a/lib/widgets/others/bottom_bar.dart +++ b/lib/widgets/others/bottom_bar.dart @@ -41,7 +41,6 @@ import 'package:permission_handler/permission_handler.dart'; import 'package:speech_to_text/speech_recognition_error.dart'; import 'package:speech_to_text/speech_recognition_result.dart'; import 'package:speech_to_text/speech_to_text.dart'; -import 'package:diplomaticquarterapp/widgets/robo-search/robosearch.dart'; import 'dart:math'; import 'package:diplomaticquarterapp/services/robo_search/event_provider.dart'; import 'package:diplomaticquarterapp/routes.dart'; diff --git a/lib/widgets/others/floating_button_search.dart b/lib/widgets/others/floating_button_search.dart index 2bfacaea..e8900040 100644 --- a/lib/widgets/others/floating_button_search.dart +++ b/lib/widgets/others/floating_button_search.dart @@ -21,6 +21,7 @@ import 'package:diplomaticquarterapp/pages/MyAppointments/MyAppointments.dart'; import 'package:diplomaticquarterapp/pages/feedback/feedback_home_page.dart'; import 'package:diplomaticquarterapp/pages/insurance/insurance_approval_screen.dart'; import 'package:diplomaticquarterapp/pages/insurance/insurance_update_screen.dart'; +import 'package:diplomaticquarterapp/pages/landing/landing_page.dart'; import 'package:diplomaticquarterapp/pages/livecare/livecare_home.dart'; import 'package:diplomaticquarterapp/pages/login/welcome.dart'; import 'package:diplomaticquarterapp/pages/medical/balance/advance_payment_page.dart'; @@ -41,7 +42,6 @@ import 'package:diplomaticquarterapp/services/robo_search/search_provider.dart'; import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart'; import 'package:diplomaticquarterapp/uitl/app_toast.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; -import 'package:diplomaticquarterapp/widgets/robo-search/robosearch.dart'; import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart'; import 'package:flutter/material.dart'; import 'package:flutter_svg/flutter_svg.dart'; @@ -95,22 +95,19 @@ class _FloatingSearchButton extends State @override void initState() { - event.controller.stream.listen((p) { - if (p['isRobot'] == 'true') { - if (this.mounted) { - setState(() { - position = Offset(250, 400); - activeAnimation = false; - }); - } - } - }); + // event.controller.stream.listen((p) { + // if (p['isRobot'] == 'true') { + // if (this.mounted) { + // setState(() { + // position = Offset(250, 400); + // activeAnimation = false; + // }); + // } + // } + // }); Future.delayed(const Duration(seconds: 2), () { - // _currentLocaleId = - // TranslationBase.of(AppGlobal.context).locale.languageCode == 'en' - // ? 'en-US' - // : 'ar-SA'; + requestPermissions(); getUserData(); @@ -122,81 +119,39 @@ class _FloatingSearchButton extends State @override Widget build(BuildContext context) { projectProvider = Provider.of(context); - return AnimatedPositioned( - onEnd: () { - // setState(() { - // this.isShow = false; - // position = Offset(250, 400); - // }); - }, - left: activeAnimation - ? TranslationBase.of(AppGlobal.context).locale.languageCode == 'en' - ? 300 - : 0 - : position.dx, - top: activeAnimation ? -150 : position.dy, - duration: activeAnimation - ? const Duration(seconds: 1) - : const Duration(seconds: 0), - // curve: Curves.bounceOut, - child: isShow - ? Draggable( - feedback: Container(child: getStack()), - child: getStack(), - childWhenDragging: Container( - color: Colors.transparent, - ), - onDragEnd: (details) { - setState(() { - position = details.offset; - }); - }) - : Container()); - - // Draggable( - // feedback: getStack(), - // childWhenDragging: Container(), - // child: getStack(), - // onDragEnd: (drag) { - // setState(() { - // top = top + drag.offset.dy < 0 ? 0 : top + drag.offset.dy; - // left = left + drag.offset.dx < 0 ? 0 : left + drag.offset.dx; - // }); - // }); + return Container(child: + isShow ? getStack() + : Stack(children: [Container()])); } Widget getStack() { return Container( height: 150, width: 150, + margin: EdgeInsets.only(right: 0.0), child: Stack(children: [ // Column( // mainAxisSize: MainAxisSize.min, // crossAxisAlignment: CrossAxisAlignment.stretch, // children: [ - GestureDetector( + GestureDetector( child: Container( - child: Image.asset('assets/images/robort.png'), + child: Image.asset('assets/images/gif/robot-idle.gif'), ), onTap: () { - showDialog( - context: context, - builder: (_) { - return RoboSearch(); - }); initSpeechState().then((value) => {startVoiceSearch()}); }, ), // ], // ), Positioned( - right: 0.0, + left: 15.0, top: 10, child: GestureDetector( onTap: () { setState(() { if (this.mounted) { - activeAnimation = true; + isShow =false; } }); }, @@ -246,7 +201,7 @@ class _FloatingSearchButton extends State } Future _speak(reconizedWord) async { - Navigator.of(AppGlobal.context).pop(); + // Navigator.of(AppGlobal.context).pop(); //await flutterTts.speak(reconizedWord); //RoboSearch.closeAlertDialog(context); getPages(reconizedWord); @@ -699,8 +654,14 @@ class _FloatingSearchButton extends State break; default: - Navigator.of(AppGlobal.context).pushNamed(HOME); - speak(); + { + // Navigator.pushAndRemoveUntil( + // context, + // MaterialPageRoute( + // builder: (context) => LandingPage()), + // (Route r) => false); + speak(); + } break; } } @@ -803,10 +764,6 @@ class _FloatingSearchButton extends State } Future navigateToSearchResults(context, docList, arr, arrDistance) async { - // Navigator.push( - // context, - // MaterialPageRoute( - // builder: (context) => SearchResults(doctorsList: docList))); var result = LinkedHashSet.from(arr).toList(); var numAll = result.length; Navigator.push( @@ -822,14 +779,15 @@ class _FloatingSearchButton extends State } speak() async { + var voice = await flutterTts.getVoices; + print(voice); if (_currentLocaleId == 'en' && results['ReturnMessage'] != null) { - await flutterTts.setVoice("en-us-x-sfg#male_2-local"); + await flutterTts.setVoice("en-us-x-sfg#male_1-local" ); await flutterTts.setLanguage("en-US"); await flutterTts.speak(results['ReturnMessage']); } else if (results['ReturnMessage_Ar'] != null) { await flutterTts.setLanguage("ar-SA"); - - await flutterTts.setVoice("ar-sa-x-sfg#male_1-local"); + await flutterTts.setVoice("ar-xa-x-arc-local"); await flutterTts.speak(results['ReturnMessage_Ar']); } // Future.delayed(const Duration(seconds: 10), () { @@ -854,12 +812,9 @@ class _FloatingSearchButton extends State getUserData() async { if (await this.sharedPref.getObject(USER_PROFILE) != null) { - //setState(() async { user = AuthenticatedUser.fromJson( await this.sharedPref.getObject(USER_PROFILE)); - // }); } - - print(_currentLocaleId); + await flutterTts.setVoice("en-us-x-sfg#male_1-local" ); } } diff --git a/lib/widgets/robo-search/robosearch.dart b/lib/widgets/robo-search/robosearch.dart deleted file mode 100644 index d471a085..00000000 --- a/lib/widgets/robo-search/robosearch.dart +++ /dev/null @@ -1,249 +0,0 @@ -import 'package:diplomaticquarterapp/config/size_config.dart'; -import 'package:diplomaticquarterapp/services/robo_search/event_provider.dart'; -import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; -import 'package:diplomaticquarterapp/widgets/buttons/button.dart'; -import 'package:diplomaticquarterapp/widgets/others/floating_button_search.dart'; -import 'package:diplomaticquarterapp/widgets/robo-search/search.dart'; -import 'package:diplomaticquarterapp/widgets/text/app_texts_widget.dart'; -import 'package:flutter/cupertino.dart'; -import 'package:flutter/material.dart'; - -class RoboSearch extends StatefulWidget { - @override - _RoboSearch createState() => new _RoboSearch(); -} - -class _RoboSearch extends State { - var event = RobotProvider(); - var searchText = ''; - bool isRetry = false; - var tween = Tween(begin: 0.0, end: 1.0).chain(CurveTween(curve: Curves.ease)); - - @override - void initState() { - event.controller.stream.listen((p) { - if (p['searchText'] != null) { - if (p['searchText'] == 'null') { - //Future.delayed(const Duration(seconds: 1), () { - if (mounted) { - setState(() { - isRetry = true; - searchText = ''; - }); - } - //}); - } else { - if (mounted) { - setState(() { - searchText = p['searchText']; - }); - } - } - } - }); - super.initState(); - } - - @override - Widget build(BuildContext context) { - return AlertDialog( - content: Container( - color: Colors.white, - height: SizeConfig.realScreenHeight * 0.5, - width: SizeConfig.realScreenWidth * 0.8, - child: Container( - child: Column( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - isRetry == true - ? Column( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Container( - margin: EdgeInsets.all(20), - padding: EdgeInsets.all(10), - decoration: BoxDecoration( - borderRadius: - BorderRadius.circular(100), - border: Border.all( - width: 5, color: Colors.red)), - child: Icon( - Icons.mic, - color: Colors.blue, - size: 48, - )), - Center( - child: AppText( - "Didn't catch that, Try speaking again", - fontSize: 14, - )), - RaisedButton( - color: Colors.transparent, - onPressed: () { - setState(() { - isRetry = false; - }); - FloatingSearchButton() - .createState() - .startVoiceSearch(); - }, - child: AppText( - 'Try again', - color: Colors.blue, - )) - ]) - : Column( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Container( - margin: EdgeInsets.all(20), - padding: EdgeInsets.all(20), - decoration: BoxDecoration( - color: Colors.blue, - borderRadius: BorderRadius.circular(100)), - child: Icon( - Icons.mic, - color: Colors.white, - size: 48, - )), - SizedBox(height: 20), - Center( - child: Text(searchText == '' - ? 'Try saying something' - : searchText)) - ], - ) - ]), - ))); - } -} - -// class RoboSearch { -// final BuildContext context; -// var event = RobotProvider(); -// var searchText = ''; -// bool isRetry = false; -// var tween = Tween(begin: 0.0, end: 1.0).chain(CurveTween(curve: Curves.ease)); -// RoboSearch({ -// @required this.context, -// }); - -// showAlertDialog(BuildContext context) { -// // set up the buttons - -// // set up the AlertDialog -// AlertDialog alert = AlertDialog( -// content: StatefulBuilder( -// builder: (BuildContext context, StateSetter setState) { - -// event.controller.stream.listen((p) { -// if (p['searchText'] != null) { -// if (p['searchText'] == 'null') { -// Future.delayed(const Duration(seconds: 1), () -// { -// setState(() { -// isRetry = true; -// searchText = ''; -// }); -// }); -// } else { -// Future.delayed(const Duration(seconds: 1), () -// { -// setState(() { -// searchText = p['searchText']; -// }); -// }); -// } -// } -// }); -// return Container( -// color: Colors.white, -// height: SizeConfig.realScreenHeight * 0.5, -// width: SizeConfig.realScreenWidth * 0.8, -// child: Container( -// child: Column( -// mainAxisAlignment: MainAxisAlignment.center, -// children: [ -// isRetry == true -// ? Column( -// mainAxisAlignment: MainAxisAlignment.center, -// children: [ -// Container( -// margin: EdgeInsets.all(20), -// padding: EdgeInsets.all(10), -// decoration: BoxDecoration( -// borderRadius: -// BorderRadius.circular(100), -// border: Border.all( -// width: 5, color: Colors.red)), -// child: Icon( -// Icons.mic, -// color: Colors.blue, -// size: 48, -// )), -// Center( -// child: AppText( -// "Didn't catch that, Try speaking again", -// fontSize: 14, -// )), -// RaisedButton( -// color: Colors.transparent, -// onPressed: () { -// setState(() { -// isRetry = false; - -// }); -// startVoiceSearch(); -// }, -// child: AppText( -// 'Try again', -// color: Colors.blue, -// )) -// ]) -// : Column( -// mainAxisAlignment: MainAxisAlignment.center, -// children: [ -// Container( -// margin: EdgeInsets.all(20), -// padding: EdgeInsets.all(20), -// decoration: BoxDecoration( -// color: Colors.blue, -// borderRadius: BorderRadius.circular(100)), -// child: Icon( -// Icons.mic, -// color: Colors.white, -// size: 48, -// )), -// SizedBox(height: 20), -// Center( -// child: Text(searchText == '' -// ? 'Try saying something' -// : searchText)) -// ], -// ) -// ]), -// )); -// }), -// ); - -// // show the dialog -// showDialog( -// context: context, -// builder: (BuildContext context) { -// return alert; -// }, -// ); -// } - -// static closeAlertDialog(BuildContext context) { -// Navigator.of(context).pop(); -// } - -// startVoiceSearch() { - -// // Navigator.of(context).pop(); -// //this.showAlertDialog(context); -// // new RoboSearch(context: context).showAlertDialog(context); -// FloatingSearchButton().createState().startVoiceSearch(); -// } -// } diff --git a/lib/widgets/robo-search/search.dart b/lib/widgets/robo-search/search.dart deleted file mode 100644 index c1ce33d1..00000000 --- a/lib/widgets/robo-search/search.dart +++ /dev/null @@ -1,233 +0,0 @@ -import 'package:diplomaticquarterapp/config/config.dart'; -import 'package:diplomaticquarterapp/config/size_config.dart'; -import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart'; -import 'package:diplomaticquarterapp/pages/BookAppointment/BookingOptions.dart'; -import 'package:diplomaticquarterapp/pages/BookAppointment/Search.dart'; -import 'package:diplomaticquarterapp/pages/landing/landing_page.dart'; -import 'package:diplomaticquarterapp/pages/medical/medical_profile_page.dart'; -import 'package:diplomaticquarterapp/pages/medical/my_admissions_page.dart'; -import 'package:diplomaticquarterapp/services/robo_search/search_provider.dart'; -import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; -import 'package:diplomaticquarterapp/widgets/bottom_navigation/bottom_nav_bar.dart'; -import 'package:diplomaticquarterapp/widgets/text/app_texts_widget.dart'; -import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart'; -import 'package:flutter/cupertino.dart'; -import 'package:flutter/material.dart'; -import 'package:flutter_tts/flutter_tts.dart'; -import 'package:hexcolor/hexcolor.dart'; -import 'package:permission_handler/permission_handler.dart'; -import 'package:speech_to_text/speech_recognition_error.dart'; -import 'package:speech_to_text/speech_recognition_result.dart'; -import 'package:speech_to_text/speech_to_text.dart'; -import 'package:diplomaticquarterapp/widgets/robo-search/robosearch.dart'; -import 'dart:math'; -import 'package:diplomaticquarterapp/services/robo_search/event_provider.dart'; - -class SearchBot with ChangeNotifier { - SearchBot() { - requestPermissions(); - initSpeechState(); - } - - SearchProvider searchProvider = new SearchProvider(); - // RobotProvider eventProvider = RobotProvider(); - bool isLoading = false; - bool isError = false; - final SpeechToText speech = SpeechToText(); - String error = ''; - String _currentLocaleId = ""; - String lastError; - double level = 0.0; - - double minSoundLevel = 50000; - double maxSoundLevel = -50000; - String reconizedWord = ''; - FlutterTts flutterTts = FlutterTts(); - var selectedLang; - bool isSearching = false; - - String lastStatus; - - bool _isInit = true; - - // @override - // void didChangeDependencies() { - // super.didChangeDependencies(); - // if (_isInit) { - - // } else { - // startVoiceSearch(); - // } - - // _isInit = false; - // } - - //@override - // Widget build(BuildContext context) { - // return Column( - // children: [ - // Image.asset('assets/images/siri-ianzhao.gif'), - // AppText( - // reconizedWord, - // fontSize: 28, - // ), - // // SizedBox( - // // child: FlatButton( - // // child: Text('Start'), - // // onPressed: () { - // // setState(() { - // // reconizedWord = 'Lisening...'; - // // }); - - // // }, - // // ), - // // height: 40, - // // width: 80) - // ], - // ); - // } - - startVoiceSearch() async { - speech.listen( - onResult: resultListener, - listenFor: Duration(seconds: 10), - localeId: _currentLocaleId, - onSoundLevelChange: soundLevelListener, - cancelOnError: true, - partialResults: true, - onDevice: true, - listenMode: ListenMode.confirmation); - } - - void resultListener(SpeechRecognitionResult result) { - // lastWords = "${result.recognizedWords} - ${result.finalResult}"; - - if (result.finalResult == true) { - // setState(() { - reconizedWord = result.recognizedWords; - //}); - Future.delayed(const Duration(seconds: 1), () { - _speak(reconizedWord); - }); - } - //}); - } - - Future _speak(reconizedWord) async { - await flutterTts.speak(reconizedWord); - - getPages(reconizedWord); - } - - void soundLevelListener(double level) { - minSoundLevel = min(minSoundLevel, level); - maxSoundLevel = max(maxSoundLevel, level); - // print("sound level $level: $minSoundLevel - $maxSoundLevel "); - //setState(() { - this.level = level; - // }); - } - - void requestPermissions() async { - Map statuses = await [ - Permission.microphone, - ].request(); - } - - Future initSpeechState() async { - await speech.initialize(onError: errorListener, onStatus: statusListener); - - _currentLocaleId = - TranslationBase.of(AppGlobal.context).locale.languageCode == 'en' - ? 'en-GB' - : 'ar-SA'; // systemLocale.localeId; - flutterTts.setLanguage(_currentLocaleId); - - await flutterTts.speak("Hello! How May I help you?"); - flutterTts.setCompletionHandler(() { - startVoiceSearch(); - }); - - // if (!mounted) return; - } - - void errorListener(SpeechRecognitionError error) { - //setState(() { - // reconizedWord = "${error.errorMsg} - ${error.permanent}"; - //}); - } - - void statusListener(String status) { - //setState(() { - reconizedWord = status == 'listening' ? 'Lisening...' : 'Sorry....'; - //}); - } - - getPages(text) { - var request = { - 'VoiceMessage': text, - 'Lang': TranslationBase.of(AppGlobal.context).locale.languageCode == 'en' - ? 'En' - : 'Ar' - }; - - searchProvider.getBotPages(request).then((value) => {}); - //getCommands(value['Response'], value['Understand']) - } - - getCommands(result, understand) async { - //RoboSearch.closeAlertDialog(context); - print(result); - switch (result["CommandNumber"]) { - case '100': - Navigator.push( - AppGlobal.context, - FadePage( - page: BookingOptions( - isAppbar: true, - ))); - break; - case '101': - Navigator.push( - AppGlobal.context, - MaterialPageRoute( - builder: (context) => Search( - type: 0, - ))); - break; - case '102': - Navigator.push( - AppGlobal.context, - MaterialPageRoute( - builder: (context) => Search( - type: 1, - ))); - break; - // case '103': - // eventProvider.setValue({"clinic_id": understand}); - // break; - - // case '104': - // eventProvider.setValue({"project_id": understand}); - // break; - // case '105': - // eventProvider.setValue({"doctor_id": understand}); - // break; - default: - { - //eventProvider.setValue({"doctor_id": '40036'}); - //eventProvider.setValue(); - // if (result['CommandNumber'] == '0') { - // searchProvider.setData(understand); - // } - } - break; - } - if (_currentLocaleId == 'en-GB') { - await flutterTts.speak(result['ResponseEn']); - } else { - await flutterTts.speak(result['ResponseAr']); - } - //searchProvider.setLisener(result); - } -} diff --git a/pubspec.yaml b/pubspec.yaml index 66e08f5c..be9bb252 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -151,8 +151,9 @@ dependencies: wakelock: ^0.1.4 after_layout: ^1.0.7 twilio_programmable_video: ^0.5.0+3 - flutter_tts: ^1.2.6 + flutter_tts: ^1.3.0 vibration: ^1.7.2 + fit_kit: ^1.1.2 speech_to_text: path: speech_to_text @@ -182,7 +183,7 @@ flutter: - assets/tracker/ - assets/images/AlHabibMedicalService/ - assets/images/pharmacy_module/ - + - assets/images/gif/ fonts: - family: WorkSans