voice search

merge-update-with-lab-changes
Sultan Khan 6 years ago
parent 227731f8f8
commit 8f18d1025a

@ -14,3 +14,4 @@ const FAMILY_FILE = 'family-file';
const USER_LAT = 'user-lat'; const USER_LAT = 'user-lat';
const USER_LONG = 'user-long'; const USER_LONG = 'user-long';
const IS_GO_TO_PARKING = 'IS_GO_TO_PARKING'; const IS_GO_TO_PARKING = 'IS_GO_TO_PARKING';
const IS_SEARCH_APPO = 'is-search-appo';

@ -1,7 +1,9 @@
import 'package:diplomaticquarterapp/config/shared_pref_kay.dart';
import 'package:diplomaticquarterapp/models/Appointments/AppoimentAllHistoryResultList.dart'; import 'package:diplomaticquarterapp/models/Appointments/AppoimentAllHistoryResultList.dart';
import 'package:diplomaticquarterapp/pages/MyAppointments/models/AppointmentType.dart'; import 'package:diplomaticquarterapp/pages/MyAppointments/models/AppointmentType.dart';
import 'package:diplomaticquarterapp/pages/MyAppointments/widgets/AppointmentCardView.dart'; import 'package:diplomaticquarterapp/pages/MyAppointments/widgets/AppointmentCardView.dart';
import 'package:diplomaticquarterapp/services/appointment_services/GetDoctorsList.dart'; import 'package:diplomaticquarterapp/services/appointment_services/GetDoctorsList.dart';
import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart';
import 'package:diplomaticquarterapp/uitl/app_toast.dart'; import 'package:diplomaticquarterapp/uitl/app_toast.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/widgets/others/app_expandable_notifier.dart'; import 'package:diplomaticquarterapp/widgets/others/app_expandable_notifier.dart';
@ -30,7 +32,7 @@ class _MyAppointmentsState extends State<MyAppointments>
TabController _tabController; TabController _tabController;
bool isDataLoaded = false; bool isDataLoaded = false;
var sharedPref = new AppSharedPreferences();
@override @override
void initState() { void initState() {
_tabController = new TabController(length: 3, vsync: this); _tabController = new TabController(length: 3, vsync: this);
@ -203,7 +205,16 @@ class _MyAppointmentsState extends State<MyAppointments>
}); });
} }
openAppointmentsTab() { openAppointmentsTab() async {
var flag = await this.sharedPref.getInt(IS_SEARCH_APPO);
if (flag == 1) {
_tabController.index = 0;
} else if (flag == 2) {
_tabController.index = 1;
} else if (flag == 3) {
_tabController.index = 2;
} else {
if (widget._patientBookedAppointmentListHospital.length != 0) { if (widget._patientBookedAppointmentListHospital.length != 0) {
_tabController.index = 0; _tabController.index = 0;
} else if (widget._patientConfirmedAppointmentListHospital.length != 0) { } else if (widget._patientConfirmedAppointmentListHospital.length != 0) {
@ -213,6 +224,7 @@ class _MyAppointmentsState extends State<MyAppointments>
return; return;
} }
} }
}
Widget getBookedAppointments() { Widget getBookedAppointments() {
return Container( return Container(

@ -22,6 +22,7 @@ import 'package:flutter/services.dart';
import 'package:intl/intl.dart'; import 'package:intl/intl.dart';
import 'package:local_auth/local_auth.dart'; import 'package:local_auth/local_auth.dart';
import 'package:smart_progress_bar/smart_progress_bar.dart'; import 'package:smart_progress_bar/smart_progress_bar.dart';
class ConfirmLogin extends StatefulWidget { class ConfirmLogin extends StatefulWidget {
@override @override
_ConfirmLogin createState() => _ConfirmLogin(); _ConfirmLogin createState() => _ConfirmLogin();
@ -87,8 +88,7 @@ class _ConfirmLogin extends State<ConfirmLogin> {
? Column( ? Column(
mainAxisAlignment: mainAxisAlignment:
MainAxisAlignment.spaceEvenly, MainAxisAlignment.spaceEvenly,
crossAxisAlignment: crossAxisAlignment: CrossAxisAlignment.start,
CrossAxisAlignment.start,
children: <Widget>[ children: <Widget>[
Image.asset( Image.asset(
'assets/images/habib-logo.png', 'assets/images/habib-logo.png',
@ -96,8 +96,7 @@ class _ConfirmLogin extends State<ConfirmLogin> {
width: 80, width: 80,
), ),
AppText( AppText(
TranslationBase.of(context) TranslationBase.of(context).welcomeBack +
.welcomeBack +
' ' + ' ' +
user.name, user.name,
fontSize: SizeConfig.textMultiplier * 3.5, fontSize: SizeConfig.textMultiplier * 3.5,
@ -123,21 +122,18 @@ class _ConfirmLogin extends State<ConfirmLogin> {
.convertStringToDate( .convertStringToDate(
user.editedOn)) user.editedOn))
: '--', : '--',
textAlign: textAlign: TextAlign.center),
TextAlign.center),
)), )),
Expanded( Expanded(
child: ListTile( child: ListTile(
title: Text( title: Text(
TranslationBase.of(context) TranslationBase.of(context)
.lastLoginWith, .lastLoginWith,
textAlign: textAlign: TextAlign.center),
TextAlign.center),
subtitle: Text( subtitle: Text(
getType(user.logInType, getType(
context), user.logInType, context),
textAlign: textAlign: TextAlign.center),
TextAlign.center),
)) ))
], ],
)) ))
@ -146,8 +142,7 @@ class _ConfirmLogin extends State<ConfirmLogin> {
: Column( : Column(
mainAxisAlignment: mainAxisAlignment:
MainAxisAlignment.spaceEvenly, MainAxisAlignment.spaceEvenly,
crossAxisAlignment: crossAxisAlignment: CrossAxisAlignment.start,
CrossAxisAlignment.start,
children: <Widget>[ children: <Widget>[
Image.asset( Image.asset(
'assets/images/habib-logo.png', 'assets/images/habib-logo.png',
@ -159,16 +154,14 @@ class _ConfirmLogin extends State<ConfirmLogin> {
TranslationBase.of(context) TranslationBase.of(context)
.verifyLoginWith, .verifyLoginWith,
fontSize: fontSize:
SizeConfig.textMultiplier * SizeConfig.textMultiplier * 3.5,
3.5,
textAlign: TextAlign.left, textAlign: TextAlign.left,
) )
: AppText( : AppText(
TranslationBase.of(context) TranslationBase.of(context)
.verifyFingerprint2, .verifyFingerprint2,
fontSize: fontSize:
SizeConfig.textMultiplier * SizeConfig.textMultiplier * 2.5,
2.5,
textAlign: TextAlign.left, textAlign: TextAlign.left,
), ),
])), ])),
@ -177,8 +170,7 @@ class _ConfirmLogin extends State<ConfirmLogin> {
flex: 2, flex: 2,
child: Column( child: Column(
mainAxisAlignment: MainAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: crossAxisAlignment: CrossAxisAlignment.start,
CrossAxisAlignment.start,
children: <Widget>[ children: <Widget>[
Row( Row(
mainAxisAlignment: mainAxisAlignment:
@ -192,8 +184,8 @@ class _ConfirmLogin extends State<ConfirmLogin> {
BiometricType BiometricType
.face.index) .face.index)
}, },
child: getButton( child:
user.logInType))), getButton(user.logInType))),
Expanded(child: getButton(5)) Expanded(child: getButton(5))
]) ])
])) ]))
@ -201,8 +193,7 @@ class _ConfirmLogin extends State<ConfirmLogin> {
flex: 4, flex: 4,
child: Column( child: Column(
mainAxisAlignment: MainAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: crossAxisAlignment: CrossAxisAlignment.start,
CrossAxisAlignment.start,
children: <Widget>[ children: <Widget>[
onlySMSBox == false onlySMSBox == false
? Row( ? Row(
@ -215,8 +206,7 @@ class _ConfirmLogin extends State<ConfirmLogin> {
) )
: SizedBox(), : SizedBox(),
Row( Row(
mainAxisAlignment: mainAxisAlignment: MainAxisAlignment.center,
MainAxisAlignment.center,
children: <Widget>[ children: <Widget>[
Expanded(child: getButton(1)), Expanded(child: getButton(1)),
Expanded(child: getButton(4)) Expanded(child: getButton(4))
@ -248,8 +238,7 @@ class _ConfirmLogin extends State<ConfirmLogin> {
], ],
)) ))
], ],
))) ))));
);
} }
Future<void> _getAvailableBiometrics() async { Future<void> _getAvailableBiometrics() async {
@ -313,7 +302,9 @@ class _ConfirmLogin extends State<ConfirmLogin> {
var request = CheckPatientAuthenticationReq.fromJson(req.toJson()); var request = CheckPatientAuthenticationReq.fromJson(req.toJson());
sharedPref.setObject(REGISTER_DATA_FOR_REGISTER, request); sharedPref.setObject(REGISTER_DATA_FOR_REGISTER, request);
authService.checkPatientAuthentication(request).then((value) => { authService
.checkPatientAuthentication(request)
.then((value) => {
if (value['isSMSSent']) if (value['isSMSSent'])
{ {
sharedPref.setString(LOGIN_TOKEN_ID, value['LogInTokenID']), sharedPref.setString(LOGIN_TOKEN_ID, value['LogInTokenID']),
@ -327,24 +318,23 @@ class _ConfirmLogin extends State<ConfirmLogin> {
{ {
if (value['IsAuthenticated']) {this.checkActivationCode()} if (value['IsAuthenticated']) {this.checkActivationCode()}
} }
}).catchError((err) { })
.catchError((err) {
print(err); print(err);
}).showProgressBar( }).showProgressBar(
text: "Loading", backgroundColor: Colors.blue.withOpacity(0.6)); text: "Loading", backgroundColor: Colors.blue.withOpacity(0.6));
} }
sendActivationCode(type) { sendActivationCode(type) async {
var request = this.getCommonRequest(); var request = this.getCommonRequest();
// loading(true); // loading(true);
this.authService.sendActivationCode(request).then((result) => {
await this.authService.sendActivationCode(request).then((result) => {
if (result != null && result['isSMSSent'] == true) if (result != null && result['isSMSSent'] == true)
{loading(false), this.startSMSService(type)} {this.startSMSService(type)}
else });
{loading(false)}
}).catchError((err) {
print(err);
}).showProgressBar(
text: "Loading", backgroundColor: Colors.blue.withOpacity(0.6));
// SMSOTP.showLoadingDialog(context, false), // SMSOTP.showLoadingDialog(context, false),
} }
@ -376,7 +366,10 @@ class _ConfirmLogin extends State<ConfirmLogin> {
} }
getMobileInfo(request) { getMobileInfo(request) {
this.authService.getLoginInfo(request).then((result) => { this
.authService
.getLoginInfo(request)
.then((result) => {
if (result['SMSLoginRequired'] == false) if (result['SMSLoginRequired'] == false)
{ {
this.loginTokenID = result.logInTokenID, this.loginTokenID = result.logInTokenID,
@ -411,10 +404,12 @@ class _ConfirmLogin extends State<ConfirmLogin> {
// // this.cs.presentAlert(result.ErrorEndUserMessage); // // this.cs.presentAlert(result.ErrorEndUserMessage);
// } // }
} }
}).catchError((err) { })
.catchError((err) {
print(err); print(err);
}).showProgressBar( }).showProgressBar(
text: "Loading", backgroundColor: Colors.blue.withOpacity(0.6));; text: "Loading", backgroundColor: Colors.blue.withOpacity(0.6));
;
} }
setUser() async {} setUser() async {}
@ -435,9 +430,13 @@ class _ConfirmLogin extends State<ConfirmLogin> {
: int.parse(this.user.mobile); : int.parse(this.user.mobile);
this.zipCode = this.registerd_data != null this.zipCode = this.registerd_data != null
? this.registerd_data.zipCode ? this.registerd_data.zipCode
: this.user.outSA == true ? "971" : "966"; : this.user.outSA == true
? "971"
: "966";
this.patientOutSA = this.registerd_data != null this.patientOutSA = this.registerd_data != null
? this.registerd_data.zipCode == "966" ? 0 : 1 ? this.registerd_data.zipCode == "966"
? 0
: 1
: this.user.outSA; : this.user.outSA;
if (this.registerd_data != null) { if (this.registerd_data != null) {
this.loginTokenID = await sharedPref.getString(LOGIN_TOKEN_ID); this.loginTokenID = await sharedPref.getString(LOGIN_TOKEN_ID);
@ -485,7 +484,10 @@ class _ConfirmLogin extends State<ConfirmLogin> {
SMSOTP.showLoadingDialog(context, true); SMSOTP.showLoadingDialog(context, true);
var request = this.getCommonRequest().toJson(); var request = this.getCommonRequest().toJson();
this.authService.checkActivationCode(request, value).then((result) => { this
.authService
.checkActivationCode(request, value)
.then((result) => {
if (result is Map) if (result is Map)
{ {
result = CheckActivationCode.fromJson(result), result = CheckActivationCode.fromJson(result),
@ -521,10 +523,12 @@ class _ConfirmLogin extends State<ConfirmLogin> {
AppToast.showErrorToast(message: result); AppToast.showErrorToast(message: result);
}), }),
} }
}).catchError((err) { })
.catchError((err) {
print(err); print(err);
}).showProgressBar( }).showProgressBar(
text: "Loading", backgroundColor: Colors.blue.withOpacity(0.6));; text: "Loading", backgroundColor: Colors.blue.withOpacity(0.6));
;
} }
checkIfUserAgreedBefore(CheckActivationCode result) { checkIfUserAgreedBefore(CheckActivationCode result) {
@ -537,7 +541,10 @@ class _ConfirmLogin extends State<ConfirmLogin> {
} }
insertIMEI() { insertIMEI() {
authService.insertDeviceImei(selectedOption).then((value) => {goToHome()}).catchError((err) { authService
.insertDeviceImei(selectedOption)
.then((value) => {goToHome()})
.catchError((err) {
print(err); print(err);
}); });
} }
@ -545,7 +552,6 @@ class _ConfirmLogin extends State<ConfirmLogin> {
goToHome() { goToHome() {
// authService.insertDeviceImei().then((value) => print(value)); // authService.insertDeviceImei().then((value) => print(value));
Navigator.of(context).pushNamed(HOME); Navigator.of(context).pushNamed(HOME);
} }
loading(flag) { loading(flag) {

@ -156,7 +156,7 @@ class AuthProvider with ChangeNotifier {
request.generalid = GENERAL_ID; request.generalid = GENERAL_ID;
request.languageID = LANGUAGE_ID; request.languageID = LANGUAGE_ID;
request.patientOutSA = request.zipCode == '966' ? 0 : 1; request.patientOutSA = request.zipCode == '966' ? 0 : 1;
try {
dynamic localRes; dynamic localRes;
await new BaseAppClient().post(CHECK_PATIENT_AUTH, await new BaseAppClient().post(CHECK_PATIENT_AUTH,
onSuccess: (dynamic response, int statusCode) { onSuccess: (dynamic response, int statusCode) {
@ -165,10 +165,6 @@ class AuthProvider with ChangeNotifier {
throw error; throw error;
}, body: request.toJson()); }, body: request.toJson());
return Future.value(localRes); return Future.value(localRes);
} catch (error) {
print(error);
throw error;
}
} }
Future<dynamic> getLoginInfo(request) async { Future<dynamic> getLoginInfo(request) async {
@ -180,7 +176,7 @@ class AuthProvider with ChangeNotifier {
request.deviceTypeID = DeviceTypeID; request.deviceTypeID = DeviceTypeID;
request.patientOutSA = request.zipCode == '966' ? 0 : 1; request.patientOutSA = request.zipCode == '966' ? 0 : 1;
request.isDentalAllowedBackend = false; request.isDentalAllowedBackend = false;
try {
dynamic localRes; dynamic localRes;
await new BaseAppClient().post(GET_MOBILE_INFO, await new BaseAppClient().post(GET_MOBILE_INFO,
onSuccess: (dynamic response, int statusCode) { onSuccess: (dynamic response, int statusCode) {
@ -189,10 +185,6 @@ class AuthProvider with ChangeNotifier {
throw error; throw error;
}, body: request.toJson()); }, body: request.toJson());
return Future.value(localRes); return Future.value(localRes);
} catch (error) {
print(error);
throw error;
}
} }
Future<dynamic> sendActivationCode(request) async { Future<dynamic> sendActivationCode(request) async {
@ -204,7 +196,7 @@ class AuthProvider with ChangeNotifier {
request.deviceTypeID = DeviceTypeID; request.deviceTypeID = DeviceTypeID;
request.patientOutSA = request.zipCode == '966' ? 0 : 1; request.patientOutSA = request.zipCode == '966' ? 0 : 1;
request.isDentalAllowedBackend = false; request.isDentalAllowedBackend = false;
try {
dynamic localRes; dynamic localRes;
await new BaseAppClient().post(SEND_ACTIVATION_CODE, await new BaseAppClient().post(SEND_ACTIVATION_CODE,
onSuccess: (dynamic response, int statusCode) { onSuccess: (dynamic response, int statusCode) {
@ -214,10 +206,6 @@ class AuthProvider with ChangeNotifier {
throw error; throw error;
}, body: request.toJson()); }, body: request.toJson());
return Future.value(localRes); return Future.value(localRes);
} catch (error) {
print(error);
throw error;
}
} }
Future<dynamic> checkActivationCode(request, [value]) async { Future<dynamic> checkActivationCode(request, [value]) async {

@ -323,7 +323,6 @@ class _AppDrawerState extends State<AppDrawer> {
await this.sharedPref.getObject(USER_PROFILE)); await this.sharedPref.getObject(USER_PROFILE));
setState(() { setState(() {
this.user = data; this.user = data;
print(this.user);
}); });
} }
} }

@ -1,27 +1,44 @@
import 'dart:collection'; import 'dart:collection';
import 'dart:io';
import 'dart:math'; import 'dart:math';
import 'package:diplomaticquarterapp/config/config.dart'; import 'package:diplomaticquarterapp/config/config.dart';
import 'package:diplomaticquarterapp/config/shared_pref_kay.dart';
import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
import 'package:diplomaticquarterapp/models/Appointments/DoctorListResponse.dart'; import 'package:diplomaticquarterapp/models/Appointments/DoctorListResponse.dart';
import 'package:diplomaticquarterapp/models/Appointments/DoctorProfile.dart'; import 'package:diplomaticquarterapp/models/Appointments/DoctorProfile.dart';
import 'package:diplomaticquarterapp/models/Authentication/authenticated_user.dart';
import 'package:diplomaticquarterapp/pages/AlHabibMedicalService/my_web_view.dart';
import 'package:diplomaticquarterapp/pages/AlHabibMedicalService/parking_page.dart';
import 'package:diplomaticquarterapp/pages/Blood/blood_donation.dart';
import 'package:diplomaticquarterapp/pages/Blood/my_balance_page.dart';
import 'package:diplomaticquarterapp/pages/BookAppointment/widgets/BranchView.dart'; import 'package:diplomaticquarterapp/pages/BookAppointment/widgets/BranchView.dart';
import 'package:diplomaticquarterapp/pages/ContactUs/findus/findus_page.dart';
import 'package:diplomaticquarterapp/pages/ErService/AmbulanceReq.dart';
import 'package:diplomaticquarterapp/pages/ErService/ErOptions.dart';
import 'package:diplomaticquarterapp/pages/ErService/NearestEr.dart'; import 'package:diplomaticquarterapp/pages/ErService/NearestEr.dart';
import 'package:diplomaticquarterapp/pages/MyAppointments/MyAppointments.dart'; import 'package:diplomaticquarterapp/pages/MyAppointments/MyAppointments.dart';
import 'package:diplomaticquarterapp/pages/family/my-family.dart';
import 'package:diplomaticquarterapp/pages/feedback/feedback_home_page.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_approval_screen.dart';
import 'package:diplomaticquarterapp/pages/insurance/insurance_update_screen.dart'; import 'package:diplomaticquarterapp/pages/insurance/insurance_update_screen.dart';
import 'package:diplomaticquarterapp/pages/livecare/livecare_home.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';
import 'package:diplomaticquarterapp/pages/medical/doctor/doctor_home_page.dart'; import 'package:diplomaticquarterapp/pages/medical/doctor/doctor_home_page.dart';
import 'package:diplomaticquarterapp/pages/medical/labs/labs_home_page.dart'; import 'package:diplomaticquarterapp/pages/medical/labs/labs_home_page.dart';
import 'package:diplomaticquarterapp/pages/medical/medical_profile_page.dart';
import 'package:diplomaticquarterapp/pages/medical/patient_sick_leave_page.dart'; import 'package:diplomaticquarterapp/pages/medical/patient_sick_leave_page.dart';
import 'package:diplomaticquarterapp/pages/medical/prescriptions/prescriptions_home_page.dart'; import 'package:diplomaticquarterapp/pages/medical/prescriptions/prescriptions_home_page.dart';
import 'package:diplomaticquarterapp/pages/medical/radiology/radiology_home_page.dart'; import 'package:diplomaticquarterapp/pages/medical/radiology/radiology_home_page.dart';
import 'package:diplomaticquarterapp/pages/medical/reports/report_home_page.dart'; import 'package:diplomaticquarterapp/pages/medical/reports/report_home_page.dart';
import 'package:diplomaticquarterapp/pages/medical/vital_sign/vital_sign_details_screen.dart'; import 'package:diplomaticquarterapp/pages/medical/vital_sign/vital_sign_details_screen.dart';
import 'package:diplomaticquarterapp/pages/paymentService/payment_service.dart';
import 'package:diplomaticquarterapp/pages/vaccine/my_vaccines_screen.dart'; import 'package:diplomaticquarterapp/pages/vaccine/my_vaccines_screen.dart';
import 'package:diplomaticquarterapp/routes.dart'; import 'package:diplomaticquarterapp/routes.dart';
import 'package:diplomaticquarterapp/services/appointment_services/GetDoctorsList.dart'; import 'package:diplomaticquarterapp/services/appointment_services/GetDoctorsList.dart';
import 'package:diplomaticquarterapp/services/robo_search/event_provider.dart'; import 'package:diplomaticquarterapp/services/robo_search/event_provider.dart';
import 'package:diplomaticquarterapp/services/robo_search/search_provider.dart'; 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/app_toast.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/widgets/robo-search/robosearch.dart'; import 'package:diplomaticquarterapp/widgets/robo-search/robosearch.dart';
@ -30,6 +47,7 @@ import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart'; import 'package:flutter_svg/flutter_svg.dart';
import 'package:flutter_tts/flutter_tts.dart'; import 'package:flutter_tts/flutter_tts.dart';
import 'package:permission_handler/permission_handler.dart'; import 'package:permission_handler/permission_handler.dart';
import 'package:provider/provider.dart';
import 'package:speech_to_text/speech_recognition_error.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_recognition_result.dart';
import 'package:speech_to_text/speech_to_text.dart'; import 'package:speech_to_text/speech_to_text.dart';
@ -38,6 +56,7 @@ import 'package:diplomaticquarterapp/pages/BookAppointment/Search.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:smart_progress_bar/smart_progress_bar.dart'; import 'package:smart_progress_bar/smart_progress_bar.dart';
import 'package:url_launcher/url_launcher.dart';
class FloatingSearchButton extends StatefulWidget { class FloatingSearchButton extends StatefulWidget {
@override @override
@ -67,11 +86,12 @@ class _FloatingSearchButton extends State<FloatingSearchButton>
bool isSearching = false; bool isSearching = false;
Map results = {}; Map results = {};
String lastStatus; String lastStatus;
AuthenticatedUser user;
bool _isInit = true; bool _isInit = true;
var event = RobotProvider(); var event = RobotProvider();
var sharedPref = new AppSharedPreferences();
bool _hasSpeech = false; bool _hasSpeech = false;
ProjectViewModel projectProvider;
@override @override
void initState() { void initState() {
super.initState(); super.initState();
@ -83,14 +103,17 @@ class _FloatingSearchButton extends State<FloatingSearchButton>
}); });
} }
}); });
requestPermissions(); requestPermissions();
// Future.delayed(const Duration(seconds: 10), () { // Future.delayed(const Duration(seconds: 10), () {
initSpeechState().then((value) => {}); initSpeechState().then((value) => {});
getUserData();
// }); // });
} }
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
projectProvider = Provider.of(context);
return AnimatedPositioned( return AnimatedPositioned(
onEnd: () { onEnd: () {
// setState(() { // setState(() {
@ -156,7 +179,9 @@ class _FloatingSearchButton extends State<FloatingSearchButton>
child: GestureDetector( child: GestureDetector(
onTap: () { onTap: () {
setState(() { setState(() {
if (this.mounted) {
activeAnimation = true; activeAnimation = true;
}
}); });
}, },
child: Align( child: Align(
@ -169,45 +194,7 @@ class _FloatingSearchButton extends State<FloatingSearchButton>
), ),
), ),
), ),
]) ]));
// Stack(
// fit: StackFit.loose,
// overflow: Overflow.visible,
// children: <Widget>[
// Container(),
// Positioned(
// child: GestureDetector(
// behavior: HitTestBehavior.translucent,
// onTapDown: (TapDownDetails details) => {
// setState(() {
// activeAnimation = true;
// })
// }, // handle your image tap here
// child: Image.asset(
// 'assets/images/CloseIcon.png',
// fit: BoxFit.cover, // this is the solution for border
// width: 30.0,
// height: 30.0,
// ),
// )),
// Positioned(
// child: GestureDetector(
// onTap: () {
// this.roboSearch(context);
// }, // handle your image tap here
// child: SvgPicture.asset('assets/images/robort_svg.svg')))
// // new RawMaterialButton(
// // // shape: new CircleBorder(),
// // elevation: 1.0,
// // child: SvgPicture.asset('assets/images/robort_svg.svg'),
// // onPressed: () {},
// // ),
// ],
// )
);
} }
startVoiceSearch() async { startVoiceSearch() async {
@ -232,12 +219,11 @@ class _FloatingSearchButton extends State<FloatingSearchButton>
if (result.finalResult == true) { if (result.finalResult == true) {
// setState(() { // setState(() {
reconizedWord = result.recognizedWords; reconizedWord = result.recognizedWords;
event.setValue({"searchText": reconizedWord}); event.setValue({"searchText": reconizedWord});
setState(() { // setState(() {
searchText = reconizedWord; // searchText = reconizedWord;
}); // });
Future.delayed(const Duration(seconds: 1), () { Future.delayed(const Duration(seconds: 1), () {
_speak(reconizedWord); _speak(reconizedWord);
}); });
@ -278,9 +264,9 @@ class _FloatingSearchButton extends State<FloatingSearchButton>
} }
if (!mounted) return; if (!mounted) return;
setState(() { // setState(() {
_hasSpeech = hasSpeech; // _hasSpeech = hasSpeech;
}); // });
} }
void errorListener(SpeechRecognitionError error) { void errorListener(SpeechRecognitionError error) {
@ -402,6 +388,19 @@ class _FloatingSearchButton extends State<FloatingSearchButton>
} }
} }
break; break;
case '104':
{
List clnicID = unique(result['ClinicId']);
//= result['ProjectId'] ? result['ProjectId'] : 0; //result['ProjectId'];
if (clnicID.length == 1) {
getDoctorsList(result['ProjectId'], clnicID[0], context,
doctorId: null, doctorName: null, isNearest: true);
} else {
goToClinic(clnicID);
}
}
break;
case '4': case '4':
{ {
Navigator.push(context, FadePage(page: LabsHomePage())); Navigator.push(context, FadePage(page: LabsHomePage()));
@ -483,11 +482,193 @@ class _FloatingSearchButton extends State<FloatingSearchButton>
} }
break; break;
case '16': case '16':
{
Navigator.push(context, FadePage(page: MyBalancePage()));
}
break;
case '17':
{
Navigator.push(context, FadePage(page: MedicalProfilePage()));
}
break;
case '18':
{
//Drivethrough need to be implemeted here.
}
break;
case '19':
{ {
Navigator.push(context, FadePage(page: LiveCareHome())); Navigator.push(context, FadePage(page: LiveCareHome()));
} }
break; break;
case '20':
{
//CMC service need to be implemeted
}
break;
case '21':
{
Navigator.push(context, FadePage(page: MyFamily()));
}
break;
case '22':
{
Navigator.push(context, FadePage(page: BloodDonationPage()));
}
break;
case '23':
{
//health calculator need to be implemeted
}
break;
case '24':
{
Navigator.of(context).push(MaterialPageRoute(
builder: (BuildContext context) => MyWebView(
title: "HMG News",
selectedUrl:
"https://twitter.com/hashtag/مجموعة_د_سليمان_الحبيب_الطبية?src=hashtag_click&f=live",
)));
}
break;
case '25':
{
if (user == null) {
Navigator.push(context, FadePage(page: WelcomeLogin()));
}
}
break;
case '26':
{
Navigator.push(context, FadePage(page: ParkingPage()));
}
break;
case '27':
{
Navigator.push(
context,
FadePage(
page: ErOptions(
isAppbar: true,
)));
}
break;
case '28':
{
Navigator.push(context, FadePage(page: AmbulanceReq()));
}
break;
case '29':
{
Navigator.push(context, FadePage(page: FindUsPage()));
}
break;
case '30':
{
launch("tel://" + result['PhoneNumbers'][0]);
}
break;
case '31':
{
Navigator.of(context).popUntil(ModalRoute.withName('/'));
}
break;
case '32':
{
Navigator.push(context, FadePage(page: AdvancePaymentPage()));
}
break;
case '33':
{
if (result['LanguageCode'] != '0') {
if (projectProvider.isArabic) {
projectProvider.changeLanguage('en');
} else {
projectProvider.changeLanguage('ar');
}
}
}
break;
case '34':
{
//settings page need to be implemented here
}
break;
case '35':
{
if (Platform.isIOS) {
launch(
"https://apps.apple.com/sa/app/dr-suliaman-alhabib/id733503978");
} else {
launch(
"https://play.google.com/store/apps/details?id=com.ejada.hmg&hl=en");
}
}
break;
case '36':
{
Navigator.of(context).pushNamed(
REGISTER,
);
}
break;
case '37':
{
Navigator.of(context).pushNamed(
SYMPTOM_CHECKER,
);
}
break;
case '38':
{
await this.sharedPref.setInt(IS_SEARCH_APPO, 1);
Navigator.push(context, FadePage(page: MyAppointments()));
}
break;
case '39':
{
await this.sharedPref.setInt(IS_SEARCH_APPO, 2);
Navigator.push(context, FadePage(page: MyAppointments()));
}
break;
case '40':
{
//Home health care service need to be implemeted here
}
break;
case '41':
{
Navigator.push(context, FadePage(page: PaymentService()));
}
break;
case '42':
{
//weather indicator need to be implemented here
}
break;
case '43':
{
await this.sharedPref.setInt(IS_SEARCH_APPO, 3);
Navigator.push(context, FadePage(page: MyAppointments()));
}
break;
case '44':
{
//chat need be implmented here.
}
break;
case '45':
{
launch('https://hmg.com/ir/ar/Pages/ShareInformation/home.aspx');
}
break;
case '46':
{
launch('https://hmg.com/ir/ar/pages/home.aspx');
}
break;
case '200': case '200':
{ {
Navigator.push(context, FadePage(page: FeedbackHomePage())); Navigator.push(context, FadePage(page: FeedbackHomePage()));
@ -499,8 +680,6 @@ class _FloatingSearchButton extends State<FloatingSearchButton>
speak(); speak();
break; break;
} }
//searchProvider.setLisener(result);
} }
getDoctorProfile(projectId, clinicId, doctorId, context, doctorData) { getDoctorProfile(projectId, clinicId, doctorId, context, doctorData) {
@ -526,13 +705,14 @@ class _FloatingSearchButton extends State<FloatingSearchButton>
}); });
} }
getDoctorsList(projectId, clinicId, context, {doctorId, doctorName}) { getDoctorsList(projectId, clinicId, context,
{doctorId, doctorName, isNearest = false}) {
List<DoctorList> doctorsList = []; List<DoctorList> doctorsList = [];
List<String> arr = []; List<String> arr = [];
List<String> arrDistance = []; List<String> arrDistance = [];
DoctorsListService service = new DoctorsListService(); DoctorsListService service = new DoctorsListService();
service service
.getDoctorsList(clinicId, projectId, false, context, .getDoctorsList(clinicId, projectId, isNearest, context,
doctorId: doctorId, doctorName: doctorName) doctorId: doctorId, doctorName: doctorName)
.then((res) { .then((res) {
if (res['MessageStatus'] == 1) { if (res['MessageStatus'] == 1) {
@ -648,4 +828,13 @@ class _FloatingSearchButton extends State<FloatingSearchButton>
List unique(List list) { List unique(List list) {
return list.toSet().toList(); return list.toSet().toList();
} }
getUserData() async {
if (await this.sharedPref.getObject(USER_PROFILE) != null) {
setState(() async {
user = AuthenticatedUser.fromJson(
await this.sharedPref.getObject(USER_PROFILE));
});
}
}
} }

Loading…
Cancel
Save