You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
diplomatic-quarter/lib/widgets/others/floating_button_search.dart

972 lines
29 KiB
Dart

4 years ago
import 'dart:collection';
4 years ago
import 'dart:io';
4 years ago
import 'dart:math';
import 'package:cached_network_image/cached_network_image.dart';
4 years ago
import 'package:diplomaticquarterapp/config/config.dart';
4 years ago
import 'package:diplomaticquarterapp/config/shared_pref_kay.dart';
import 'package:diplomaticquarterapp/config/size_config.dart';
import 'package:diplomaticquarterapp/core/service/AuthenticatedUserObject.dart';
import 'package:diplomaticquarterapp/core/service/medical/vital_sign_service.dart';
4 years ago
import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
import 'package:diplomaticquarterapp/locator.dart';
4 years ago
import 'package:diplomaticquarterapp/models/Appointments/DoctorListResponse.dart';
import 'package:diplomaticquarterapp/models/Appointments/DoctorProfile.dart';
4 years ago
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';
4 years ago
import 'package:diplomaticquarterapp/pages/BookAppointment/widgets/BranchView.dart';
import 'package:diplomaticquarterapp/pages/ContactUs/LiveChat/livechat_page.dart';
4 years ago
import 'package:diplomaticquarterapp/pages/ContactUs/findus/findus_page.dart';
import 'package:diplomaticquarterapp/pages/DrawerPages/family/my-family.dart';
4 years ago
import 'package:diplomaticquarterapp/pages/ErService/AmbulanceReq.dart';
import 'package:diplomaticquarterapp/pages/ErService/ErOptions.dart';
4 years ago
import 'package:diplomaticquarterapp/pages/ErService/NearestEr.dart';
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';
4 years ago
import 'package:diplomaticquarterapp/pages/livecare/livecare_home.dart';
4 years ago
import 'package:diplomaticquarterapp/pages/login/welcome.dart';
import 'package:diplomaticquarterapp/pages/medical/balance/advance_payment_page.dart';
4 years ago
import 'package:diplomaticquarterapp/pages/medical/doctor/doctor_home_page.dart';
import 'package:diplomaticquarterapp/pages/medical/labs/labs_home_page.dart';
4 years ago
import 'package:diplomaticquarterapp/pages/medical/medical_profile_page.dart';
4 years ago
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/radiology/radiology_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';
4 years ago
import 'package:diplomaticquarterapp/pages/paymentService/payment_service.dart';
4 years ago
import 'package:diplomaticquarterapp/pages/vaccine/my_vaccines_screen.dart';
import 'package:diplomaticquarterapp/routes.dart';
import 'package:diplomaticquarterapp/services/appointment_services/GetDoctorsList.dart';
import 'package:diplomaticquarterapp/services/robo_search/event_provider.dart';
import 'package:diplomaticquarterapp/services/robo_search/search_provider.dart';
4 years ago
import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart';
4 years ago
import 'package:diplomaticquarterapp/uitl/app_toast.dart';
import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart';
4 years ago
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/widgets/text/app_texts_widget.dart';
4 years ago
import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart';
4 years ago
import 'package:flutter/material.dart';
4 years ago
import 'package:flutter_svg/flutter_svg.dart';
4 years ago
import 'package:flutter_tts/flutter_tts.dart';
import 'package:permission_handler/permission_handler.dart';
4 years ago
import 'package:provider/provider.dart';
4 years ago
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/pages/BookAppointment/DoctorProfile.dart';
import 'package:diplomaticquarterapp/pages/BookAppointment/Search.dart';
import 'package:flutter/cupertino.dart';
import 'package:diplomaticquarterapp/pages/pharmacies/screens/pharmacy_module_page.dart';
4 years ago
import 'package:url_launcher/url_launcher.dart';
import 'package:diplomaticquarterapp/pages/AlHabibMedicalService/%E2%80%8B%20health_calculators.dart';
4 years ago
class FloatingSearchButton extends StatefulWidget {
@override
_FloatingSearchButton createState() => _FloatingSearchButton();
}
class _FloatingSearchButton extends State<FloatingSearchButton>
with TickerProviderStateMixin {
4 years ago
Offset position = Offset(250, 400);
bool activeAnimation = false;
bool isShow = true;
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;
var searchText;
double minSoundLevel = 50000;
double maxSoundLevel = -50000;
String reconizedWord = '';
FlutterTts flutterTts = FlutterTts();
var selectedLang;
bool isSearching = false;
Map results = {};
String lastStatus;
4 years ago
AuthenticatedUser user;
4 years ago
bool _isInit = true;
var event = RobotProvider();
4 years ago
var sharedPref = new AppSharedPreferences();
4 years ago
bool _hasSpeech = false;
4 years ago
ProjectViewModel projectProvider;
bool isAnimationEnable = true;
AnimationController controller;
Animation<Offset> offset;
String networkImage;
4 years ago
@override
void initState() {
controller =
AnimationController(vsync: this, duration: Duration(seconds: 1));
offset = Tween<Offset>(begin: Offset.zero, end: Offset(0.0, 1.0))
.animate(controller);
controller.reverse();
initialSpeak();
4 years ago
Future.delayed(const Duration(seconds: 2), () {
requestPermissions();
getUserData();
});
controller.reverse();
event.controller.stream.listen((p) {
if (p['isRobotVisible'] == 'true') {
if (this.mounted) {
setState(() {
controller.reverse();
});
}
}
});
4 years ago
super.initState();
4 years ago
}
4 years ago
@override
void didUpdateWidget(FloatingSearchButton oldWidget) {
// super.didUpdateWidget(oldWidget);
// event.controller.stream.listen((p) {
// if (p['animationEnable'] != 'false') {
// initialSpeak();
// }
// });
}
AuthenticatedUserObject authenticatedUserObject =
locator<AuthenticatedUserObject>();
VitalSignService _vitalSignService = locator<VitalSignService>();
4 years ago
@override
Widget build(BuildContext context) {
4 years ago
projectProvider = Provider.of(context);
4 years ago
return Container(
child: SlideTransition(position: offset, child: getStack()));
4 years ago
}
Widget getStack() {
return Container(
height: 150,
width: 150,
margin: EdgeInsets.only(left: 20.0),
4 years ago
child: Stack(children: <Widget>[
4 years ago
GestureDetector(
4 years ago
child: Container(
child: networkImage != null
? CachedNetworkImage(
imageUrl: networkImage,
placeholder: (context, url) =>
Image.asset('assets/images/gif/robot-idle.gif'),
errorWidget: (context, url, error) => Icon(Icons.error),
)
: Image.asset(isAnimationEnable == true
? 'assets/images/gif/robot-speaking.gif'
: 'assets/images/gif/robot-idle.gif'),
4 years ago
),
onTap: () {
new RoboSearch(context: context).showAlertDialog(context);
4 years ago
initSpeechState().then((value) => {startVoiceSearch()});
4 years ago
},
),
Positioned(
left: 15.0,
4 years ago
top: 10,
child: GestureDetector(
onTap: () {
setState(() {
4 years ago
if (this.mounted) {
controller.forward();
//isShow = false;
4 years ago
}
4 years ago
});
},
child: Align(
alignment: Alignment.topRight,
child: CircleAvatar(
radius: 14.0,
backgroundColor: Colors.red,
child: Icon(Icons.close, color: Colors.white),
),
),
4 years ago
),
4 years ago
),
4 years ago
]));
4 years ago
}
startVoiceSearch() async {
_currentLocaleId =
4 years ago
TranslationBase.of(AppGlobal.context).locale.languageCode;
4 years ago
speech.listen(
onResult: resultListener,
listenFor: Duration(seconds: 10),
4 years ago
localeId: _currentLocaleId == 'en' ? 'en-US' : 'ar-SA',
4 years ago
onSoundLevelChange: soundLevelListener,
cancelOnError: true,
partialResults: true,
onDevice: true,
listenMode: ListenMode.deviceDefault);
}
void resultListener(SpeechRecognitionResult result) {
// lastWords = "${result.recognizedWords} - ${result.finalResult}";
4 years ago
reconizedWord = result.recognizedWords;
event.setValue({"searchText": reconizedWord});
4 years ago
if (result.finalResult == true) {
4 years ago
4 years ago
// setState(() {
4 years ago
// setState(() {
// searchText = reconizedWord;
// });
4 years ago
Future.delayed(const Duration(seconds: 1), () {
_speak(reconizedWord);
4 years ago
RoboSearch.closeAlertDialog(context);
4 years ago
});
}
//});
}
Future _speak(reconizedWord) async {
// Navigator.of(AppGlobal.context).pop();
4 years ago
//await flutterTts.speak(reconizedWord);
4 years ago
//RoboSearch.closeAlertDialog(context);
4 years ago
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<Permission, PermissionStatus> statuses = await [
Permission.microphone,
].request();
}
Future<void> initSpeechState() async {
bool hasSpeech = await speech.initialize(
onError: errorListener, onStatus: statusListener);
4 years ago
//if (hasSpeech) {
// _currentLocaleId =
// _currentLocaleId == 'en'
// ? 'en-US'
// : 'ar-SA'; // systemLocale.localeId;
4 years ago
4 years ago
// }
4 years ago
if (!mounted) return;
4 years ago
// setState(() {
// _hasSpeech = hasSpeech;
// });
4 years ago
}
void errorListener(SpeechRecognitionError error) {
4 years ago
event.setValue({"searchText": 'null'});
4 years ago
//setState(() {
// reconizedWord = "${error.errorMsg} - ${error.permanent}";
//});
}
void statusListener(String status) {
//setState(() {
reconizedWord = status == 'listening' ? 'Lisening...' : 'Sorry....';
//});
}
getPages(text) {
var request = {
'VoiceMessage': text,
4 years ago
'Lang': _currentLocaleId == 'en' ? 'En' : 'Ar'
4 years ago
};
searchProvider
.getBotPages(request)
.then((value) => {getCommands(value['Understand'])});
}
getCommands(result) async {
print(result);
results = result;
switch (result["CommandNumber"]) {
case '100':
{
4 years ago
getDoctorsList(
result['ProjectId'],
result['ClinicId'].length > 0 ? result['ClinicId'][0] : 0,
context,
doctorId: result['DoctorId'],
doctorName: null,
);
4 years ago
}
break;
case '102':
{
getDoctorsList(
0,
0,
context,
doctorId: result['DoctorId'],
doctorName: null,
);
}
break;
case '103':
{
List clnicID = unique(result['ClinicId']);
if (clnicID.length == 1) {
getDoctorsList(
0,
clnicID[0],
context,
doctorId: null,
doctorName: null,
);
} else {
goToClinic(clnicID);
}
}
break;
4 years ago
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;
4 years ago
case '4':
{
Navigator.push(context, FadePage(page: LabsHomePage()));
}
break;
case '6':
{
Navigator.push(context, FadePage(page: RadiologyHomePage()));
}
break;
case '7':
{
Navigator.push(
context,
FadePage(
page: MyAppointments(),
),
);
}
break;
case '8':
{
Navigator.push(
context,
FadePage(
page: HomePrescriptionsPage(),
),
);
}
break;
case '9':
{
Navigator.push(
context,
FadePage(
page: DoctorHomePage(),
),
);
}
break;
case '10':
{
Navigator.push(
context,
FadePage(
page: VitalSignDetailsScreen(),
),
);
}
break;
case '11':
{
Navigator.push(context, FadePage(page: InsuranceUpdate()));
}
break;
case '12':
{
Navigator.push(context, FadePage(page: InsuranceApproval()));
}
break;
case '13':
{
Navigator.push(context, FadePage(page: MyVaccines()));
}
break;
case '14':
{
Navigator.push(context, FadePage(page: HomeReportPage()));
}
break;
case '5':
{
Navigator.push(context, FadePage(page: NearestEr()));
}
break;
case '15':
{
Navigator.push(context, FadePage(page: PatientSickLeavePage()));
}
break;
case '16':
4 years ago
{
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':
4 years ago
{
Navigator.push(context, FadePage(page: LiveCareHome()));
}
break;
4 years ago
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
4 years ago
4 years ago
}
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.
Navigator.push(context, FadePage(page: LiveChatPage()));
4 years ago
}
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;
4 years ago
case '200':
{
Navigator.push(context, FadePage(page: FeedbackHomePage()));
}
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 '47':
{
//this.cs.sharedService.setSharedData(true, "isComingFromVoiceCommand");
//this.cs.openFeedback();
Navigator.push(context, FadePage(page: FeedbackHomePage()));
break;
}
case '48':
{
Navigator.push(context, FadePage(page: PharmacyPage()));
break;
}
case '50':
{
this.signOut();
break;
}
case '51':
{
// Women health calculator
//this.cs.sharedService.setSharedData(true, "isOpenWomenHealthCalculator");
//this.cs.navigateForward('/calculators/calculator');
Navigator.push(context, FadePage(page: HealthCalculators()));
4 years ago
break;
}
case '52':
{
//this.bridge.openMyInvoices();
break;
}
case '53':
{
launch("tel://920066666");
break;
}
4 years ago
default:
{
speak();
}
4 years ago
break;
}
}
getDoctorProfile(projectId, clinicId, doctorId, context, doctorData) {
List<DoctorProfileList> docProfileList = [];
DoctorsListService service = new DoctorsListService();
service
.getDoctorsProfile(doctorId, clinicId, projectId, context)
.then((res) {
if (res['MessageStatus'] == 1) {
if (res['DoctorProfileList'].length != 0) {
res['DoctorProfileList'].forEach((v) {
docProfileList.add(new DoctorProfileList.fromJson(v));
});
}
navigateToDoctorProfile(context, doctorData[0], docProfileList[0],
isAppo: true);
//speak();
}
}).catchError((err) {
print(err);
});
}
4 years ago
getDoctorsList(projectId, clinicId, context,
{doctorId, doctorName, isNearest = false}) {
4 years ago
List<DoctorList> doctorsList = [];
List<String> arr = [];
List<String> arrDistance = [];
DoctorsListService service = new DoctorsListService();
GifLoaderDialogUtils.showMyDialog(context);
4 years ago
service
4 years ago
.getDoctorsList(clinicId, projectId, isNearest, context,
4 years ago
doctorId: doctorId, doctorName: doctorName)
.then((res) {
GifLoaderDialogUtils.hideDialog(context);
4 years ago
if (res['MessageStatus'] == 1) {
setState(() {
if (res['SearchDoctorsByTime_IsVoiceCommandList'] != null &&
res['SearchDoctorsByTime_IsVoiceCommandList'].length != 0) {
doctorsList.clear();
res['SearchDoctorsByTime_IsVoiceCommandList'].forEach((v1) {
v1['DoctorList'].forEach((v) {
doctorsList.add(new DoctorList.fromJson(v));
arr.add(new DoctorList.fromJson(v).projectName);
arrDistance.add(new DoctorList.fromJson(v)
.projectDistanceInKiloMeters
.toString());
});
});
if (doctorsList.length == 1) {
getDoctorProfile(
projectId, clinicId, doctorId[0], context, doctorsList);
//speak();
} else {
navigateToSearchResults(context, doctorsList, arr, arrDistance);
}
} else if (res['DoctorList'].length != 0) {
doctorsList.clear();
res['DoctorList'].forEach((v) {
doctorsList.add(new DoctorList.fromJson(v));
arr.add(new DoctorList.fromJson(v).projectName);
arrDistance.add(new DoctorList.fromJson(v)
.projectDistanceInKiloMeters
.toString());
});
if (doctorsList.length == 1) {
getDoctorProfile(
projectId, clinicId, doctorId[0], context, doctorsList);
//speak();
} else {
navigateToSearchResults(context, doctorsList, arr, arrDistance);
}
}
});
} else {
AppToast.showErrorToast(message: res['ErrorEndUserMessage']);
}
}).catchError((err) {
GifLoaderDialogUtils.hideDialog(context);
AppToast.showErrorToast(message: err);
4 years ago
print(err);
});
4 years ago
}
Future navigateToDoctorProfile(context, docObject, docProfile,
{isAppo}) async {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => DoctorProfile(
doctor: docObject,
docProfileList: docProfile,
isOpenAppt: isAppo,
)));
}
Future navigateToSearchResults(context, docList, arr, arrDistance) async {
var result = LinkedHashSet<String>.from(arr).toList();
var numAll = result.length;
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => BranchView(
doctorsList: docList,
result: result,
num: numAll,
resultDistance: arrDistance),
),
);
}
speak() async {
setState(() {
this.networkImage = results['AnimationURL'];
this.isAnimationEnable = true;
});
4 years ago
if (_currentLocaleId == 'en' && results['ReturnMessage'] != null) {
await flutterTts
.setVoice({"name": "en-au-x-aub-network", "locale": "en-AU"});
4 years ago
await flutterTts.speak(results['ReturnMessage']);
} else if (results['ReturnMessage_Ar'] != null) {
await flutterTts
.setVoice({"name": "ar-xa-x-ard-network", "locale": "ar"});
4 years ago
await flutterTts.speak(results['ReturnMessage_Ar']);
}
stopAnimation();
4 years ago
}
goToClinic(List ids) {
Navigator.push(
AppGlobal.context,
MaterialPageRoute(
builder: (context) => Search(
type: 0,
clnicIds: ids,
)));
speak();
}
List unique(List list) {
return list.toSet().toList();
4 years ago
}
4 years ago
getUserData() async {
if (await this.sharedPref.getObject(USER_PROFILE) != null) {
4 years ago
user = AuthenticatedUser.fromJson(
await this.sharedPref.getObject(USER_PROFILE));
4 years ago
}
}
initialSpeak() async {
results = {
'ReturnMessage_Ar':
"هذه الخدمة تم تصميمها لتتمكن من ربط الملفات الطبية للعائلة بملفك الطبي حتى تتمكن من إدارة سجلاتهم عن طريق تسجيل الدخول إلى ملفك الطبي.",
'ReturnMessage':
"Through this service, you will be able to link your family medical files to your medical file so that you can manage their records by login to your medical file."
};
this.speak();
if (Provider.of<ProjectViewModel>(context, listen: false).isArabic ==
false &&
results['ReturnMessage'] != null) {
await flutterTts
.setVoice({"name": "en-au-x-aub-network", "locale": "en-AU"});
await flutterTts.speak(results['ReturnMessage']);
} else if (results['ReturnMessage_Ar'] != null) {
await flutterTts
.setVoice({"name": "ar-xa-x-ard-network", "locale": "ar"});
await flutterTts.speak(results['ReturnMessage_Ar']);
}
this.isAnimationEnable = true;
stopAnimation();
}
stopAnimation() {
flutterTts.setCompletionHandler(() => {
event.setValue({"animationEnable": 'false'}),
setState(() {
this.networkImage = null;
this.isAnimationEnable = false;
})
});
}
4 years ago
signOut() async {
authenticatedUserObject.logout();
projectProvider.isLogin = false;
await authenticatedUserObject.getUser();
_vitalSignService.heightCm = "";
_vitalSignService.weightKg = "";
await sharedPref.clear();
this.user = null;
Navigator.of(context).pushNamed(HOME);
4 years ago
}
4 years ago
}
class RoboSearch {
final BuildContext context;
var event = RobotProvider();
var searchText = null;
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) {
setState(() {
event.controller.stream.listen((p) {
if (p['searchText'] != null) {
setState(() {
searchText = p['searchText'];
});
}
});
});
return Container(
color: Colors.white,
height: SizeConfig.realScreenHeight * 0.5,
width: SizeConfig.realScreenWidth * 0.8,
child: Container(
child: Column(children: [
Expanded(
flex: 1,
child: Center(
child: Image.asset(
'assets/images/habib-logo.png',
height: 75,
width: 75,
))),
Expanded(
flex: 3,
child: Center(
child: Container(
margin: EdgeInsets.all(20),
padding: EdgeInsets.all(10),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(100),
border: Border.all(width: 2, color: Colors.red)),
child: Icon(
Icons.mic,
color: Colors.blue,
size: 48,
),
))),
Expanded(
flex: 1,
child: Center(
4 years ago
child: Text(searchText != null && searchText != 'null'
? searchText
4 years ago
: 'Try saying something'))),
// searchText == 'null' ? Center(child:RaisedButton(child: Text('Retry'), onPressed: (){
// //RoboSearch.closeAlertDialog(context);
// new FloatingSearchButton().createState().startVoiceSearch();
// }, )) :SizedBox()
]),
));
}),
);
// show the dialog
showDialog(
context: context,
builder: (BuildContext context) {
return alert;
},
);
}
static closeAlertDialog(BuildContext context) {
Navigator.of(context).pop();
}
}