import 'dart:io'; import 'dart:typed_data'; import 'package:flutter/material.dart'; import 'dart:convert'; import 'package:flutter/services.dart'; import 'package:doctor/common/preloader.dart'; import 'package:http/http.dart' as http; import 'package:shared_preferences/shared_preferences.dart'; import 'package:intl/intl.dart'; import 'dart:async'; import 'package:geolocator/geolocator.dart'; import 'package:fluttertoast/fluttertoast.dart'; //const Color primaryColor = Color(0XFF1786A3); const Color primaryColor = Color(0XFF99405B); const Color secondaryColor = Color(0XFFA0C899); const Color buttonColors = Color(0XFFFFAC1C); const Color greyColor = Color(0XFF8F8E8E); const Color textFieldStartColor = Colors.grey; const Color screenBackgroundColor = Color(0XFFEAF6FF); const Color screenBackgroundColord = Colors.black12; const Color dashboardbackground = Color(0XFFF5F5F5); //Color AppBarGradient_1 = Color(0XFF1258F6); Color AppBarGradient_1 = Color(0XFF68A85D); TextStyle PreloaderText() { return TextStyle(color: Color(0XFF68A85D)); } TextStyle labelTextStyle() { return TextStyle(color: primaryColor, fontSize: 12); } TextStyle labelTextStyleOrderMedicine() { return TextStyle(color: primaryColor, fontSize: 12,fontWeight: FontWeight.bold); } TextStyle haveMotorTextStyle() { return TextStyle( color: Colors.red, fontSize: 12, fontWeight: FontWeight.bold); } TextStyle textButtonStyle() { return TextStyle(color: primaryColor, fontSize: 15); } TextStyle textButtonStyleReports() { return TextStyle(color: Colors.white, fontSize: 12); } TextStyle iconBelowTextStyle() { return TextStyle(fontSize: 10, color: primaryColor); } TextStyle valuesTextStyle() { return TextStyle( fontSize: 12, fontWeight: FontWeight.bold, ); } TextStyle recordDetailsHeading() { return TextStyle( fontSize: 14, fontWeight: FontWeight.bold, ); } TextStyle problemTextStyle() { return TextStyle( fontSize: 12, fontWeight: FontWeight.bold, color: Colors.red ); } TextStyle headingsTextStyle() { return TextStyle( fontSize: 12, fontWeight: FontWeight.bold, color: primaryColor ); } TextStyle startAndStopHeading() { return TextStyle( fontSize: 14, fontWeight: FontWeight.bold, color: primaryColor, ); } Text capacitySuffixText() { return Text('in Ltrs.'); } Text dimensionSuffixText() { return Text('in fts'); } TextStyle dashboardTextStyle() { return TextStyle( color: Colors.white, fontWeight: FontWeight.bold, ); } TextStyle labelTextStyleBold() { return TextStyle( color: primaryColor, fontWeight: FontWeight.bold, ); } TextStyle serverIssueTextStyle() { return TextStyle(color: Colors.red, fontSize: 15); } TextStyle bottomSheetValuesTextStyle() { return TextStyle( fontSize: 12, fontWeight: FontWeight.bold, overflow: TextOverflow.ellipsis, ); } TextStyle wrapTextStyle() { return TextStyle( color: primaryColor, fontSize: 12, fontWeight: FontWeight.bold, overflow: TextOverflow.ellipsis, ); } TextStyle wrapTextStyleBlack() { return TextStyle( color: Colors.black, fontSize: 12, fontWeight: FontWeight.bold, overflow: TextOverflow.ellipsis, ); } TextStyle withoutWrapTextStyle() { return TextStyle( fontSize: 12, fontWeight: FontWeight.bold, ); } TextStyle bmiTextStyle() { return TextStyle( color: primaryColor, fontSize: 16, fontWeight: FontWeight.bold, ); } TextStyle drawerListItemsTextStyle() { return TextStyle(color: Colors.white); } TextStyle drawerHeaderTextStyle() { return TextStyle(color: Colors.white, fontSize: 15); } TextStyle drawerHeaderTextStyleNew() { return TextStyle(color: Colors.black, fontSize: 15); } InputDecoration textFormFieldDecoration(IconData icon, var text) { return InputDecoration( filled: true, fillColor: Colors.white, prefixIcon: Icon( icon, color: greyColor, ), border: OutlineInputBorder(borderSide: BorderSide(color: primaryColor)), focusedBorder: OutlineInputBorder( borderSide: BorderSide(color: primaryColor), ), enabledBorder: OutlineInputBorder( borderSide: BorderSide(color: primaryColor), ), labelText: text, labelStyle: TextStyle( color: Colors.black, //<-- SEE HERE ), ); } InputDecoration textFormFieldDecorationBMI(IconData icon, var text) { return InputDecoration( //filled: true, //fillColor: Colors.white, prefixIcon: Icon( icon, color: primaryColor, ), border: OutlineInputBorder(borderSide: BorderSide(color: primaryColor)), focusedBorder: OutlineInputBorder( borderSide: BorderSide(color: primaryColor), ), enabledBorder: OutlineInputBorder( borderSide: BorderSide(color: primaryColor), ), labelText: text, labelStyle: TextStyle( //color: Colors.black, //<-- SEE HERE ), ); } final GlobalKey preloaderWindowKey = new GlobalKey(); Future preloaderWindow(BuildContext context) async { try { Dialogs.showLoadingDialog(context, preloaderWindowKey); } catch (error) {} } class AppSettings { static SharedPreferences sharedPreferences = SharedPreferences.getInstance() as SharedPreferences; static String userName = ''; static String userAddress = ''; static String email = ''; static String age = ''; static String gender = ''; static String phoneNumber = ''; static String accessToken = ''; static String customerId = ''; static double userLatitude = 0; static double userLongitude = 0; static String customerIdsign = ''; static String profileImage = ''; static List storedPreferenceValidKeys = ['username', 'access_token']; static String preloadText = 'Please wait'; static String latitude = ''; static String longitude = ''; static bool servicestatus = false; static bool haspermission = false; static late LocationPermission permission; static late Position position; static String long = "", lat = ""; late StreamSubscription positionStream; static String fcmId = ''; static String serverToken = 'AAAAA66BLaA:APA91bHcmbyiNN8hCL-t-M9oH-u7ZMOl74fcImMM2DQZLgdyY98Wu9XxME-CTPcjpjU6Yy48ouxISrOMb9lpa3PJofh8qciUKMNxV2al-bDvGvPP_VVaH0mrTHzR56hdkGy1Zl-0frDO'; //api urls static String host = 'http://35.200.129.165:4000/api/'; static String loginUrl = host + 'login'; static String signUpUrl = host + 'users'; static String sendSmsUrl = host + 'sendSms'; static String phoneVerificationUrl = host + 'phone'; static String verifyPhnUrl = host + 'phone'; static String resetTokenUrl = host + 'reset_token'; static String bmiCaluculateUrl = host + 'insertBMI'; static String bpCaluculateUrl = host + 'insertBP'; static String sugarCaluculateUrl = host + 'insertSugar'; static String profilePicUrl = host + 'users/profile-picture'; static String inviteFriendUrl = host + 'sendInviteLink'; static String updateProfileUrl = host + 'update/currentUser'; static String updateLocationUrl = host + 'updateLocation'; static String uploadPicUrl = host + 'uploads'; static String getBmiHistoryUrl = host + 'usersbmi'; static String getBpHistoryUrl = host + 'usersbp'; static String getSugarHistoryUrl = host + 'userssugar'; static String addMedicineTimingsUrl = host + 'medicine-timing'; static String updateMedicineTimingsUrl = host + 'update-medicine-timing'; static String getMedicineTimingsUrl = host + 'getmedicineztiming'; static String findingsUploadPicUrl = host + 'uploads-findings-prescription'; static String addFindingsUrl = host + 'update-uploads-findingsPictureId-prescription'; static String addReportsUrl = host + 'update-uploads-reportsPictureId-prescription'; static String addPrescriptionsUrl = host + 'update-uploads-prescriptionPictureId-prescription'; static String updateFindingsUploadPicUrl = host + 'update-uploads-findings-prescription'; static String updateReportsUploadPicUrl = host + 'update-uploads-reports-prescription'; static String reportsUploadPicUrl = host + 'uploads-reports-prescription'; static String prescriptionUploadPicUrl = host + 'uploads-prescription-prescription'; static String updatePrescriptionPicUrl = host + 'update-uploads-prescription-prescription'; static String recordPrescriptionsUploadPicUrl = host + 'uploads-prescription-prescription'; static String getAllpharmaciesDataUrl = host + 'getAllPharmacylist'; static String getAllQuotationRequestsUrl = host + 'userprecription'; static String getQuotationUrl = host + 'submitPicture'; static String addPrescriptionUrl = host + 'add-prescription-details'; static String addRecordsUrl = host + 'add-record'; static String updateRecordsUrl = host + 'records'; static String reportMySelfVideoUploadUrl = host + 'reportProblemVideo'; static String uploadReportMyselfPictureUrl = host + 'reportProblemPicture'; //static String getAllPrescriptionsDataUrl = host + 'usersinglerprecription'; static String getAllPrescriptionsDataUrl = host + 'getAllPrescriptionDetails'; static String getRecordsDataUrl = host + 'getAllRecords'; static String deleteRecordUrl = host + 'deleteRecord'; static String deleteFindingsUrl = host + 'delete-uploads-findings'; static String deletePrescriptionsUrl = host + 'delete-prescription'; static String deleteReportsUrl = host + 'delete-report'; static String deleteRecordsUrl = host + 'delete-url'; static String deleteBMIDetailsUrl = host + 'deleteBMI'; static String deleteBPDetailsUrl = host + 'deleteBP'; static String deleteSugarDetailsUrl = host + 'deleteSugar'; static String addReportMySelfProblemUrl = host + 'insertReport'; static String getAllReportProblemDetalisUrl = host + 'userreport'; static String deleteReportMySelfProblemUrl = host + 'deleteReportProblem'; static File? updatedImage; static String image = ''; static String profilePictureUrl = ''; static var api = { 'signIn': host + '/login', }; /*Formatter*/ static String formNum(String s) { var comma = NumberFormat('#,##,###', 'en_IN'); return comma.format( int.parse(s), ); } static String formDouble(String s) { var comma = NumberFormat('#,##,###.##', 'en_IN'); return comma.format( double.parse(s), ); } /* Preloader */ static GlobalKey preLoaderKey = new GlobalKey(); static Future preLoaderDialog(BuildContext context) async { try { preLoaderKey = new GlobalKey(); Dialogs.showLoadingDialog(context, preLoaderKey); } catch (error) {} } ////request headers with content type static Future> buildRequestHeaders() async { Map _headers = new Map(); _headers[HttpHeaders.contentTypeHeader] = 'application/json'; _headers['Authorization'] = accessToken; return _headers; } //request headers without content type static Future> buildPutRequestHeaders() async { Map _headers = new Map(); _headers['Authorization'] = accessToken; return _headers; } static Future> buildPutRequestHeadersForResetToken() async { Map _headers = new Map(); return _headers; } // Shared preferences save,get and clear data static saveData(String _key, _value, type) async { sharedPreferences = await SharedPreferences.getInstance(); if (type == 'STRING') { await sharedPreferences.setString(_key, _value.toString()); } else if (type == 'INTEGER') { await sharedPreferences.setInt(_key, _value); } else if (type == 'BOOL') { await sharedPreferences.setBool(_key, _value); } else if (type == 'DOUBLE') { await sharedPreferences.setDouble(_key, _value); } } static getData(String _key, type) async { sharedPreferences = await SharedPreferences.getInstance(); if (type == 'STRING') { return sharedPreferences.getString(_key) ?? ''; } else if (type == 'INTEGER') { return sharedPreferences.getInt(_key) ?? -1; } else if (type == 'BOOL') { return sharedPreferences.getBool(_key) ?? -1; } else if (type == 'DOUBLE') { return sharedPreferences.getDouble(_key) ?? -1; } } static clearSharedPrefeences() async { sharedPreferences = await SharedPreferences.getInstance(); await sharedPreferences.clear(); } /*Sign in check*/ static Future isSigIn() async { bool isSignInCheck = true; for (var eachKey in storedPreferenceValidKeys) { if (await getData(eachKey, 'STRING') == '') { isSignInCheck = false; } } return isSignInCheck; } static Future internetConnectivity() async { try { final result = await InternetAddress.lookup('google.com'); if (result.isNotEmpty && result[0].rawAddress.isNotEmpty) { return true; } } on SocketException catch (_) { return false; } return false; } /*Apis Starts here*/ /*Apis ends here*/ //save data local static Future saveAvailableReportAndLocationsInMemory( dynamic input) async { // save login name information await saveData('username', input['simplydata']['username'], 'STRING'); await saveData( 'access_token', input['simplydata']['access_token'], 'STRING'); await saveData('phone', input['simplydata']['phone'], 'STRING'); await saveData('email', input['simplydata']['email'][0]['email'], 'STRING'); await saveData('customerId', input['simplydata']['customerId'], 'STRING'); await saveData('profile', input['simplydata']['picture'], 'STRING'); await saveData('user_address', input['simplydata']['address1'], 'STRING'); await saveData('latitude', input['simplydata']['latitude'], 'DOUBLE'); await saveData('longitude', input['simplydata']['longitude'], 'DOUBLE'); await saveData('fcmId', input['simplydata']['fcmId'], 'STRING'); await saveData('age', input['simplydata']['age'], 'STRING'); await saveData('gender', input['simplydata']['gender'], 'STRING'); //await saveData('age', input['simplydata']['age'], 'STRING'); //latitude,longitude await loadDataFromMemory(); } static Future loadDataFromMemory() async { userName = await getData('username', 'STRING'); accessToken = await getData('access_token', 'STRING'); email = await getData('email', 'STRING'); userAddress = await getData('user_address', 'STRING'); phoneNumber = await getData('phone', 'STRING'); customerId = await getData('customerId', 'STRING'); userLatitude = await getData('latitude', 'DOUBLE'); userLongitude = await getData('longitude', 'DOUBLE'); profilePictureUrl = await getData('profile', 'STRING'); fcmId = await getData('fcmId', 'STRING'); age = await getData('age', 'STRING'); gender = await getData('gender', 'STRING'); } static void longSuccessToast(String message) { Fluttertoast.showToast( msg: message, toastLength: Toast.LENGTH_SHORT, gravity: ToastGravity.BOTTOM, timeInSecForIosWeb: 1, backgroundColor: Colors.green, textColor: Colors.white, fontSize: 16.0); } static void longSuccessToast1(String message) { Fluttertoast.showToast( msg: message, toastLength: Toast.LENGTH_LONG, gravity: ToastGravity.CENTER, timeInSecForIosWeb: 1, backgroundColor: Colors.green, textColor: Colors.white, fontSize: 16.0); } static void longFailedToast(String message) { Fluttertoast.showToast( msg: message, toastLength: Toast.LENGTH_LONG, gravity: ToastGravity.BOTTOM, timeInSecForIosWeb: 1, backgroundColor: Colors.red, textColor: Colors.white, fontSize: 16.0); } static Widget noDataUI(String _tabName) { _tabName = _tabName ?? ''; return Container( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ Image( image: AssetImage('images/no_data.png'), width: 200, ), SizedBox( height: 8, ), Text( 'There is no data to show you right now.', style: TextStyle( fontSize: 12, color: Colors.grey[600], fontFamily: 'Swis2', ), ), SizedBox( height: 5, ), Text( _tabName, style: TextStyle(fontSize: 15, fontFamily: 'Swis1'), ), ], ), ); } static appBar(String title) { title = title ?? ''; return AppBar( backgroundColor: primaryColor, title: Text(title), ); } /*location*/ static checkGps() async { servicestatus = await Geolocator.isLocationServiceEnabled(); if (servicestatus) { permission = await Geolocator.checkPermission(); if (permission == LocationPermission.denied) { permission = await Geolocator.requestPermission(); if (permission == LocationPermission.denied) { print('Location permissions are denied'); } else if (permission == LocationPermission.deniedForever) { print("'Location permissions are permanently denied"); } else { haspermission = true; } } else { haspermission = true; } if (haspermission) { /*setState(() { //refresh the UI });*/ await getLocation(); } } else { print("GPS Service is not enabled, turn on GPS location"); } } static getLocation() async { position = await Geolocator.getCurrentPosition( desiredAccuracy: LocationAccuracy.high); /*print(position.longitude); //Output: 80.24599079 print(position.latitude);*/ //Output: 29.6593457 long = await position.longitude.toString(); lat = await position.latitude.toString(); /*setState(() { //refresh UI });*/ LocationSettings locationSettings = LocationSettings( accuracy: LocationAccuracy.high, //accuracy of the location data distanceFilter: 100, //minimum distance (measured in meters) a //device must move horizontally before an update event is generated; ); StreamSubscription positionStream = Geolocator.getPositionStream(locationSettings: locationSettings) .listen((Position position) { print(position.longitude); //Output: 80.24599079 print(position.latitude); //Output: 29.6593457 long = position.longitude.toString(); lat = position.latitude.toString(); }); } }