You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

603 lines
18 KiB

11 months ago
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<State> preloaderWindowKey = new GlobalKey<State>();
Future<void> 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<String> 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<Position> 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<State> preLoaderKey = new GlobalKey<State>();
static Future<void> preLoaderDialog(BuildContext context) async {
try {
preLoaderKey = new GlobalKey<State>();
Dialogs.showLoadingDialog(context, preLoaderKey);
} catch (error) {}
}
////request headers with content type
static Future<Map<String, String>> buildRequestHeaders() async {
Map<String, String> _headers = new Map<String, String>();
_headers[HttpHeaders.contentTypeHeader] = 'application/json';
_headers['Authorization'] = accessToken;
return _headers;
}
//request headers without content type
static Future<Map<String, String>> buildPutRequestHeaders() async {
Map<String, String> _headers = new Map<String, String>();
_headers['Authorization'] = accessToken;
return _headers;
}
static Future<Map<String, String>>
buildPutRequestHeadersForResetToken() async {
Map<String, String> _headers = new Map<String, String>();
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<bool> isSigIn() async {
bool isSignInCheck = true;
for (var eachKey in storedPreferenceValidKeys) {
if (await getData(eachKey, 'STRING') == '') {
isSignInCheck = false;
}
}
return isSignInCheck;
}
static Future<bool> 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<void> 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<void> 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: <Widget>[
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<Position> 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();
});
}
}