From 3b2f9251dcb18ee8cdfcef459453bb5c0caab6e0 Mon Sep 17 00:00:00 2001 From: Sultan Khan Date: Mon, 17 Aug 2020 14:56:21 +0300 Subject: [PATCH] search --- lib/config/config.dart | 3 +- lib/core/service/client/base_app_client.dart | 5 ++- lib/core/viewModels/project_view_model.dart | 8 ++++- lib/main.dart | 9 +++++- lib/pages/landing/landing_page.dart | 24 ++++++++++++-- lib/services/robo_search/search_provider.dart | 24 +++++++++----- lib/widgets/others/app_scaffold_widget.dart | 1 + lib/widgets/robo-search/robosearch.dart | 32 +++++-------------- lib/widgets/robo-search/search.dart | 26 ++++++++++++--- 9 files changed, 89 insertions(+), 43 deletions(-) diff --git a/lib/config/config.dart b/lib/config/config.dart index b3673abd..7fc16880 100644 --- a/lib/config/config.dart +++ b/lib/config/config.dart @@ -122,8 +122,7 @@ const GET_PAtIENTS_INSURANCE_UPDATED = "Services/Patients.svc/REST/PatientER_GetPatientInsuranceCardUpdateHistory"; const GET_PAtIENTS_INSURANCE_APPROVALS = "Services/Patients.svc/REST/GetApprovalStatus"; -const SEARCH_BOT = - 'Services/HabibiChatBotApi/BotInterface/GetVoiceCommandResponse'; +const SEARCH_BOT = 'HabibiChatBotApi/BotInterface/GetVoiceCommandResponse'; class AppGlobal { static var context; diff --git a/lib/core/service/client/base_app_client.dart b/lib/core/service/client/base_app_client.dart index 05cb0f8b..315a77e8 100644 --- a/lib/core/service/client/base_app_client.dart +++ b/lib/core/service/client/base_app_client.dart @@ -61,11 +61,14 @@ class BaseAppClient { var parsed = json.decode(response.body.toString()); if (isAllowAny) { onSuccess(parsed, statusCode); - } else if (!parsed['IsAuthenticated']) { + } else if (parsed['IsAuthenticated'] == false || + parsed['IsAuthenticated'] == null) { if (parsed['isSMSSent'] == true) { onSuccess(parsed, statusCode); } else if (parsed['MessageStatus'] == 1) { onSuccess(parsed, statusCode); + } else if (parsed['Result'] == 'OK') { + onSuccess(parsed, statusCode); } else { onFailure(parsed['ErrorEndUserMessage'] ?? parsed['ErrorMessage'], statusCode); diff --git a/lib/core/viewModels/project_view_model.dart b/lib/core/viewModels/project_view_model.dart index e91ea4f2..e9d5ed0a 100644 --- a/lib/core/viewModels/project_view_model.dart +++ b/lib/core/viewModels/project_view_model.dart @@ -14,7 +14,8 @@ class ProjectViewModel with ChangeNotifier { bool isLoading = false; bool isError = false; String error = ''; - + dynamic searchvalue; + dynamic get searchValue => searchvalue; Locale get appLocal => _appLocale; bool get isArabic => _isArabic; @@ -71,4 +72,9 @@ class ProjectViewModel with ChangeNotifier { if (subscription != null) subscription.cancel(); super.dispose(); } + + setSearchValue(data) { + searchvalue = data; + notifyListeners(); + } } diff --git a/lib/main.dart b/lib/main.dart index dd0f3d97..8ad06ce9 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -3,10 +3,11 @@ import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:flutter/material.dart'; import 'package:flutter_localizations/flutter_localizations.dart'; import 'package:provider/provider.dart'; - +import 'package:diplomaticquarterapp/services/robo_search/search_provider.dart'; import 'config/size_config.dart'; import 'core/viewModels/project_view_model.dart'; import 'locator.dart'; +import 'package:diplomaticquarterapp/pages/landing/landing_page.dart'; void main() { setupLocator(); @@ -14,6 +15,7 @@ void main() { } class MyApp extends StatelessWidget { + /// static final _myTabbedPageKey = new GlobalKey<_LandingPageState>(); @override Widget build(BuildContext context) { return LayoutBuilder( @@ -26,6 +28,11 @@ class MyApp extends StatelessWidget { ChangeNotifierProvider( create: (context) => ProjectViewModel(), ), + // ChangeNotifierProvider( + // create: (context) => SearchProvider()), + ChangeNotifierProvider.value( + value: SearchProvider(), + ) ], child: Consumer( builder: (context, projectProvider, child) => MaterialApp( diff --git a/lib/pages/landing/landing_page.dart b/lib/pages/landing/landing_page.dart index c3bee59e..89227ee7 100644 --- a/lib/pages/landing/landing_page.dart +++ b/lib/pages/landing/landing_page.dart @@ -5,6 +5,7 @@ import 'package:diplomaticquarterapp/pages/ToDoList/ToDo.dart'; import 'package:diplomaticquarterapp/services/authentication/auth_provider.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/drawer/app_drawer_widget.dart'; @@ -12,16 +13,20 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:firebase_messaging/firebase_messaging.dart'; import 'package:permission_handler/permission_handler.dart'; +import 'package:provider/provider.dart'; import 'home_page.dart'; +import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart'; class LandingPage extends StatefulWidget { @override _LandingPageState createState() => _LandingPageState(); } -class _LandingPageState extends State { +class _LandingPageState extends State + with SingleTickerProviderStateMixin { int currentTab = 0; PageController pageController; + ProjectViewModel projectProvider; final FirebaseMessaging _firebaseMessaging = FirebaseMessaging(); final authService = new AuthProvider(); _changeCurrentTab(int tab) { @@ -44,6 +49,7 @@ class _LandingPageState extends State { //assert(token != null); }); } + void requestPermissions() async { await [ Permission.location, @@ -56,6 +62,10 @@ class _LandingPageState extends State { @override Widget build(BuildContext context) { + //final searchValue = Provider.of(context); + //print(searchValue); + // projectProvider = Provider.of(context); + // checkValue(projectProvider); return Scaffold( appBar: AppBar( elevation: 0, @@ -81,7 +91,11 @@ class _LandingPageState extends State { physics: NeverScrollableScrollPhysics(), controller: pageController, children: [ - HomePage(), MedicalProfilePage(), MyAdmissionsPage(), ToDo()], + HomePage(), + MedicalProfilePage(), + MyAdmissionsPage(), + ToDo() + ], ), bottomNavigationBar: BottomNavBar(changeIndex: _changeCurrentTab), ); @@ -121,4 +135,10 @@ class _LandingPageState extends State { void setUserValues(value) async { sharedPref.setObject(IMEI_USER_DATA, value); } + + checkValue(projectProvider) { + if (projectProvider.searchValue != null) { + _changeCurrentTab(2); + } + } } diff --git a/lib/services/robo_search/search_provider.dart b/lib/services/robo_search/search_provider.dart index b88d8f68..03ce6480 100644 --- a/lib/services/robo_search/search_provider.dart +++ b/lib/services/robo_search/search_provider.dart @@ -1,25 +1,31 @@ import 'package:diplomaticquarterapp/config/config.dart'; import 'package:diplomaticquarterapp/core/service/client/base_app_client.dart'; import 'package:flutter/cupertino.dart'; +import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart'; +import 'dart:async'; +import 'dart:math' as Math; class SearchProvider with ChangeNotifier { bool isLogin = false; bool isLoading = true; - dynamic pageData; - AuthProvider() { - getLisner(); - } + Map pageData = {}; + Map get value => pageData; + ProjectViewModel projectProvider = ProjectViewModel(); + // AuthProvider() { + // // getLisner(); + // } - Future getBotPages(request) async { + Future getBotPages(request) async { try { await BaseAppClient().post(SEARCH_BOT, onSuccess: (dynamic response, int statusCode) { pageData = response; + notifyListeners(); }, onFailure: (String error, int statusCode) { throw error; }, body: request); - // notifyListeners(); + return Future.value(pageData); } catch (error) { print(error); @@ -27,7 +33,9 @@ class SearchProvider with ChangeNotifier { } } - getLisner() { - return pageData; + setLisener(data) { + pageData["id"] = 100; + //projectProvider.setSearchValue(pageData); + notifyListeners(); } } diff --git a/lib/widgets/others/app_scaffold_widget.dart b/lib/widgets/others/app_scaffold_widget.dart index f4c3537b..50cac52e 100644 --- a/lib/widgets/others/app_scaffold_widget.dart +++ b/lib/widgets/others/app_scaffold_widget.dart @@ -30,6 +30,7 @@ class AppScaffold extends StatelessWidget { @override Widget build(BuildContext context) { AppGlobal.context = context; + return Scaffold( backgroundColor: Theme.of(context).scaffoldBackgroundColor, appBar: isShowAppBar diff --git a/lib/widgets/robo-search/robosearch.dart b/lib/widgets/robo-search/robosearch.dart index 5569624f..c94f534b 100644 --- a/lib/widgets/robo-search/robosearch.dart +++ b/lib/widgets/robo-search/robosearch.dart @@ -17,7 +17,14 @@ class RoboSearch { // set up the AlertDialog AlertDialog alert = AlertDialog( title: Center(child: Text(TranslationBase.of(context).search)), - content: SearchOption(), + content: StatefulBuilder( + builder: (BuildContext context, StateSetter setState) { + return Container( + color: Colors.white, + height: SizeConfig.realScreenHeight * 0.5, + width: SizeConfig.realScreenWidth * 0.8, + child: SearchBot()); + }), ); // show the dialog @@ -33,26 +40,3 @@ class RoboSearch { Navigator.of(context).pop(); } } - -class SearchOption extends StatefulWidget { - @override - _SearchOption createState() => _SearchOption(); -} - -class _SearchOption extends State { - bool isLoading = true; - // var familyFileProvider = RobotProvider(); - @override - void initState() { - isLoading = true; - super.initState(); - } - - Widget build(BuildContext context) { - return Container( - color: Colors.white, - height: SizeConfig.realScreenHeight * 0.5, - width: SizeConfig.realScreenWidth * 0.8, - child: SearchBot()); - } -} diff --git a/lib/widgets/robo-search/search.dart b/lib/widgets/robo-search/search.dart index 363adc7a..30d352b0 100644 --- a/lib/widgets/robo-search/search.dart +++ b/lib/widgets/robo-search/search.dart @@ -1,7 +1,12 @@ import 'package:diplomaticquarterapp/config/size_config.dart'; +import 'package:diplomaticquarterapp/core/viewModels/project_view_model.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/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'; @@ -10,6 +15,7 @@ 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'; class SearchBot extends StatefulWidget { @@ -19,7 +25,8 @@ class SearchBot extends StatefulWidget { class _SearchBot extends State { // DrAppSharedPreferances sharedPref = new DrAppSharedPreferances(); - SearchProvider searchProvider = new SearchProvider(); + // SearchProvider searchProvider = new SearchProvider(); + ProjectViewModel projectProvider = ProjectViewModel(); bool isLoading = false; bool isError = false; final SpeechToText speech = SpeechToText(); @@ -27,8 +34,8 @@ class _SearchBot extends State { String _currentLocaleId = ""; String lastError; double level = 0.0; - double minSoundLevel = 50000; - double maxSoundLevel = -50000; + double minSoundLevel = 10000; + double maxSoundLevel = -10000; String reconizedWord = ''; FlutterTts flutterTts = FlutterTts(); @@ -148,8 +155,19 @@ class _SearchBot extends State { 'Lang': TranslationBase.of(context).locale.languageCode == 'en' ? 'En' : 'Ar' }; + if (text == 'book appointment') { + Navigator.push(context, FadePage(page: MyAdmissionsPage())); + } + + // //searchProvider.setLisener(request); + // // searchProvider.getBotPages(request).then((result) => getCommands(result)); + // // var dialog = RoboSearch(context: context); + // //projectProvider.setSearchValue(request); + // RoboSearch.closeAlertDialog(context); + // PageController pageController; + // pageController.jumpToPage(1); - searchProvider.getBotPages(request).then((result) => getCommands(result)); + // landing._changeCurrentTab(1); } getCommands(result) {