Completed the flow

dev_3.3_BLE
Faiz Hashmi 2 years ago
parent 6cd1e29998
commit 4ec93e8609

@ -85,7 +85,6 @@ class BleBridge(private var flutterEngine: FlutterEngine, private var mainActivi
private const val STOP_SCAN = "stopScan"
private const val STOP_SCAN_CHECK_ME = "stopScanCheckMe"
private const val CONNECT_DEVICE = "connectDevice"
private const val CONNECT_DEVICE_CHECK_ME = "connectDeviceCheckMe"
private const val SCAN_DEVICE_EKG = "scan_ekg"
private const val EKG_FILES_LIST = "ecgFilesList"
private const val FACTORY_RESET_ECG = "factoryResetECG"
@ -93,8 +92,14 @@ class BleBridge(private var flutterEngine: FlutterEngine, private var mainActivi
private const val DISCONNECT_DEVICE = "disconnectDevice"
private const val DISCONNECT_CHECK_ME = "disconnectCheckMe"
private const val READ_USER_CHECK_ME_PRO = "readUserCheckMePro"
private const val GET_DEVICE_INFO_CHECK_ME_PRO = "getDeviceInfoCheckMePro"
private const val SCAN_FOR_CHECK_ME_PRO = "scanForCheckMePro"
private const val CONNECT_DEVICE_CHECK_ME = "connectDeviceCheckMe"
private const val GET_BP_DATA_CHECK_ME_PRO = "getBPDataFromCheckMePro"
private const val GET_OXI_DATA_CHECK_ME_PRO = "getOxiDataFromCheckMePro"
private const val GET_TEMP_DATA_CHECK_ME_PRO = "getTempDataFromCheckMePro"
private const val GET_ECG_DATA_CHECK_ME_PRO = "getEcgDataFromCheckMePro"
private const val GET_GLUCOSE_DATA_CHECK_ME_PRO = "getGlucoseDataFromCheckMePro"
val scan = BleScanManager()
val dataScope = CoroutineScope(Dispatchers.IO)
val uiScope = CoroutineScope(Dispatchers.Main)
@ -246,6 +251,16 @@ class BleBridge(private var flutterEngine: FlutterEngine, private var mainActivi
connectDeviceCheckMe(methodCall.arguments as List<String>)
} else if (methodCall.method == DISCONNECT_CHECK_ME) {
disConnectDeviceCheckMe()
} else if (methodCall.method == GET_BP_DATA_CHECK_ME_PRO) {
getBPDataFromCheckMePro(methodCall.arguments as String);
} else if (methodCall.method == GET_GLUCOSE_DATA_CHECK_ME_PRO) {
getGlucoseDataFromCheckMePro(methodCall.arguments as String)
} else if (methodCall.method == GET_OXI_DATA_CHECK_ME_PRO) {
getOxyDataFromCheckMePro()
} else if (methodCall.method == GET_ECG_DATA_CHECK_ME_PRO) {
getECGDataFromCheckMePro()
} else if (methodCall.method == GET_TEMP_DATA_CHECK_ME_PRO) {
getTemperatureDataFromCheckMePro()
} else if (methodCall.method == SCAN_DEVICE_EKG) {
// scanDeviceEKG(methodCall, result)
} else if (methodCall.method == EKG_FILES_LIST) {
@ -258,8 +273,6 @@ class BleBridge(private var flutterEngine: FlutterEngine, private var mainActivi
scanForCheckMePro(bleScanManager, scanResultHandler)
} else if (methodCall.method == READ_USER_CHECK_ME_PRO) {
} else if (methodCall.method == GET_DEVICE_INFO_CHECK_ME_PRO) {
} else {
result.notImplemented()
}
@ -421,10 +434,14 @@ class BleBridge(private var flutterEngine: FlutterEngine, private var mainActivi
val f = BpInfo(it)
val json = gson.toJson(f.Bp)
Log.d("BPMeter", json.toString())
val returnData = mapOf("type" to "BPCheckMePro", "data" to json.toString())
eventSink?.success(returnData)
}
}
} else {
// HANDLE FAILURE HERE WITH A GENERIC DATA MAP TO FLUTTER
val returnData = mapOf("type" to "FailureCheckMePro", "data" to "")
eventSink?.success(returnData)
}
}
@ -437,10 +454,14 @@ class BleBridge(private var flutterEngine: FlutterEngine, private var mainActivi
val f = GluInfo(it)
val json = gson.toJson(f.Glu)
Log.d("BloodGlucoseMeter", json.toString())
val returnData = mapOf("type" to "GlucoseCheckMePro", "data" to json.toString())
eventSink?.success(returnData)
}
}
} else {
// HANDLE FAILURE HERE WITH A GENERIC DATA MAP TO FLUTTER
val returnData = mapOf("type" to "FailureCheckMePro", "data" to "")
eventSink?.success(returnData)
}
}
@ -454,10 +475,14 @@ class BleBridge(private var flutterEngine: FlutterEngine, private var mainActivi
val f = OxyInfo(it)
val json = gson.toJson(f.Oxy)
Log.d("Oximeter", json.toString())
val returnData = mapOf("type" to "OxiCheckMePro", "data" to json.toString())
eventSink?.success(returnData)
}
}
} else {
// HANDLE FAILURE HERE WITH A GENERIC DATA MAP TO FLUTTER
val returnData = mapOf("type" to "FailureCheckMePro", "data" to "")
eventSink?.success(returnData)
}
}
@ -471,10 +496,15 @@ class BleBridge(private var flutterEngine: FlutterEngine, private var mainActivi
val f = EcgInfo(it)
val json = gson.toJson(f.ecg)
Log.d("ECGMeter", json.toString())
val returnData = mapOf("type" to "ECGCheckMePro", "data" to json.toString())
eventSink?.success(returnData)
}
}
} else {
// HANDLE FAILURE HERE WITH A GENERIC DATA MAP TO FLUTTER
val returnData = mapOf("type" to "FailureCheckMePro", "data" to "")
eventSink?.success(returnData)
}
}
@ -487,10 +517,14 @@ class BleBridge(private var flutterEngine: FlutterEngine, private var mainActivi
val f = TmpInfo(it)
val json = gson.toJson(f.Tmp)
Log.d("TempMeter", json.toString())
val returnData = mapOf("type" to "TemperatureCheckMePro", "data" to json.toString())
eventSink?.success(returnData)
}
}
} else {
// HANDLE FAILURE HERE WITH A GENERIC DATA MAP TO FLUTTER
val returnData = mapOf("type" to "FailureCheckMePro", "data" to "")
eventSink?.success(returnData)
}
}

@ -1,6 +1,8 @@
import 'package:diplomaticquarterapp/pages/medical/my_trackers/ble_device_type_screens/ble_devices_screen.dart';
import 'package:diplomaticquarterapp/pages/medical/my_trackers/ble_device_type_screens/checkme_all_in_one_info_screen.dart';
import 'package:diplomaticquarterapp/pages/medical/my_trackers/ble_models/ble_devices_model.dart';
import 'package:diplomaticquarterapp/pages/medical/my_trackers/my_trackers_view_model/my_trackers_view_model.dart';
import 'package:diplomaticquarterapp/uitl/utils_new.dart';
import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart';
import 'package:diplomaticquarterapp/widgets/buttons/defaultButton.dart';
import 'package:diplomaticquarterapp/widgets/data_display/medical/medical_profile_item.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
@ -65,16 +67,19 @@ class _AndesAllInOneConnectScreenState extends State<AndesAllInOneConnectScreen>
switch (trackerTypeEnum) {
case TrackerTypeEnum.BloodPressureTracker:
case TrackerTypeEnum.BloodSugarTracker:
myTrackersViewModel.getCheckMeUsersListDialog(context);
myTrackersViewModel.getCheckMeUsersListDialog(trackerTypeEnum, context);
break;
case TrackerTypeEnum.OxymeterTracker:
// TODO: Handle this case.
myTrackersViewModel.getOxiDataFromCheckMePro();
Navigator.of(context).push(FadePage(page: CheckMeAllInOneInfoScreen(trackerTypeEnum)));
break;
case TrackerTypeEnum.ECGTracker:
// TODO: Handle this case.
myTrackersViewModel.getECGDataFromCheckMePro();
Navigator.of(context).push(FadePage(page: CheckMeAllInOneInfoScreen(trackerTypeEnum)));
break;
case TrackerTypeEnum.Temperature:
// TODO: Handle this case.
myTrackersViewModel.getTempDataFromCheckMePro();
Navigator.of(context).push(FadePage(page: CheckMeAllInOneInfoScreen(trackerTypeEnum)));
break;
case TrackerTypeEnum.Spirometer:
case TrackerTypeEnum.WeightScale:

@ -120,21 +120,8 @@ class _BleDevicesScreenState extends State<BleDevicesScreen> {
return;
}
Permission.storage.isGranted.then((isGranted) {
log("isGranted: $isGranted");
Navigator.pushReplacement(context, FadePage(page: AndesAllInOneConnectScreen(deviceModel: device)));
if (!isGranted) {
Permission.manageExternalStorage.request().then((granted) {
log("status: $granted");
if (granted == PermissionStatus.granted) {
Navigator.pushReplacement(context, FadePage(page: AndesAllInOneConnectScreen(deviceModel: device)));
}
});
} else {
Navigator.pushReplacement(context, FadePage(page: AndesAllInOneConnectScreen(deviceModel: device)));
}
});
break;
}
}

@ -0,0 +1,294 @@
import 'package:diplomaticquarterapp/config/size_config.dart';
import 'package:diplomaticquarterapp/pages/medical/my_trackers/ble_models/checkmepro_all_in_one_models/checkme_bp_model.dart';
import 'package:diplomaticquarterapp/pages/medical/my_trackers/ble_models/checkmepro_all_in_one_models/checkme_ecg_model.dart';
import 'package:diplomaticquarterapp/pages/medical/my_trackers/ble_models/checkmepro_all_in_one_models/checkme_glucose_model.dart';
import 'package:diplomaticquarterapp/pages/medical/my_trackers/ble_models/checkmepro_all_in_one_models/checkme_oxi_model.dart';
import 'package:diplomaticquarterapp/pages/medical/my_trackers/ble_models/checkmepro_all_in_one_models/checkme_temperature_model.dart';
import 'package:diplomaticquarterapp/pages/medical/my_trackers/my_trackers_view_model/my_trackers_view_model.dart';
import 'package:diplomaticquarterapp/uitl/utils_new.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
class CheckMeAllInOneInfoScreen extends StatelessWidget {
final TrackerTypeEnum allInOneTrackerTypeEnum;
const CheckMeAllInOneInfoScreen(this.allInOneTrackerTypeEnum);
String getTrackerNameByEnum(TrackerTypeEnum trackerTypeEnum) {
switch (trackerTypeEnum) {
case TrackerTypeEnum.OxymeterTracker:
return "Oxymeter";
case TrackerTypeEnum.BloodPressureTracker:
return "Blood Pressure";
case TrackerTypeEnum.BloodSugarTracker:
return "Blood Glucose";
case TrackerTypeEnum.ECGTracker:
return "ECG";
case TrackerTypeEnum.WeightScale:
return "Weight Scale";
case TrackerTypeEnum.Temperature:
return "Temperature";
case TrackerTypeEnum.Spirometer:
return "Spirometer";
case TrackerTypeEnum.AllInOneTracker:
return "All in One";
}
return "All in One";
}
Widget getAllInOneOperationWidgets(MyTrackersViewModel myTrackersVm, TrackerTypeEnum trackerTypeEnum, BuildContext context) {
switch (trackerTypeEnum) {
case TrackerTypeEnum.OxymeterTracker:
return buildOxiWidget(myTrackersVm, context);
case TrackerTypeEnum.BloodPressureTracker:
return buildBPWidget(myTrackersVm, context);
case TrackerTypeEnum.BloodSugarTracker:
return buildGlucoseWidget(myTrackersVm, context);
case TrackerTypeEnum.ECGTracker:
return buildECGWidget(myTrackersVm, context);
case TrackerTypeEnum.Temperature:
return buildTemperatureWidget(myTrackersVm, context);
case TrackerTypeEnum.Spirometer:
case TrackerTypeEnum.WeightScale:
case TrackerTypeEnum.AllInOneTracker:
return getNoDataWidget(context);
}
return getNoDataWidget(context);
}
Widget buildTemperatureWidget(MyTrackersViewModel myTrackersVm, BuildContext context) {
return Column(
mainAxisSize: MainAxisSize.max,
children: [
if (myTrackersVm.filesLoader) ...[
Center(child: CircularProgressIndicator())
] else if (myTrackersVm.checkMeTemperatures != null && myTrackersVm.checkMeTemperatures.isNotEmpty) ...[
Material(
child: ListView.separated(
itemCount: myTrackersVm.checkMeTemperatures.length,
separatorBuilder: (context, index) => SizedBox(height: 14),
shrinkWrap: true,
reverse: false,
itemBuilder: (context, index) {
CheckMeTemperatureModel checkMeTemp = myTrackersVm.checkMeTemperatures[index];
return InkWell(
onTap: () => Navigator.pop(context),
child: Container(
decoration: cardRadius(12),
padding: EdgeInsets.all(12.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text("Temperature: ${checkMeTemp.tmp}"),
mHeight(4.0),
Text("Date: ${checkMeTemp.date}"),
],
),
),
);
},
),
)
] else ...[
getNoDataWidget(context),
]
],
);
}
Widget buildECGWidget(MyTrackersViewModel myTrackersVm, BuildContext context) {
return Column(
mainAxisSize: MainAxisSize.max,
children: [
if (myTrackersVm.filesLoader) ...[
Center(child: CircularProgressIndicator())
] else if (myTrackersVm.checkMeEcg != null && myTrackersVm.checkMeEcg.isNotEmpty) ...[
Material(
child: ListView.separated(
itemCount: myTrackersVm.checkMeEcg.length,
separatorBuilder: (context, index) => SizedBox(height: 14),
shrinkWrap: true,
reverse: false,
itemBuilder: (context, index) {
CheckMeECGModel checkMeECGModel = myTrackersVm.checkMeEcg[index];
return InkWell(
onTap: () => Navigator.pop(context),
child: Container(
decoration: cardRadius(12),
padding: EdgeInsets.all(12.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text("Date: ${checkMeECGModel.date}"),
mHeight(4.0),
Text("way: ${checkMeECGModel.way}"),
],
),
),
);
},
),
)
] else ...[
getNoDataWidget(context),
]
],
);
}
Widget buildOxiWidget(MyTrackersViewModel myTrackersVm, BuildContext context) {
return Column(
mainAxisSize: MainAxisSize.max,
children: [
if (myTrackersVm.filesLoader) ...[
Center(child: CircularProgressIndicator())
] else if (myTrackersVm.checkMeOxi != null && myTrackersVm.checkMeOxi.isNotEmpty) ...[
Material(
child: ListView.separated(
itemCount: myTrackersVm.checkMeOxi.length,
separatorBuilder: (context, index) => SizedBox(height: 14),
shrinkWrap: true,
reverse: false,
itemBuilder: (context, index) {
CheckMeOxiModel checkMeOxiModel = myTrackersVm.checkMeOxi[index];
return InkWell(
onTap: () => Navigator.pop(context),
child: Container(
decoration: cardRadius(12),
padding: EdgeInsets.all(12.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text("PR: ${checkMeOxiModel.pr} PI: ${checkMeOxiModel.pi}"),
mHeight(4.0),
Text("Oxi: ${checkMeOxiModel.oxy}"),
mHeight(4.0),
Text("Date: ${checkMeOxiModel.date}"),
],
),
),
);
},
),
)
] else ...[
getNoDataWidget(context),
]
],
);
}
Widget buildBPWidget(MyTrackersViewModel myTrackersVm, BuildContext context) {
return Column(
mainAxisSize: MainAxisSize.max,
children: [
if (myTrackersVm.filesLoader) ...[
Center(child: CircularProgressIndicator())
] else if (myTrackersVm.checkMeBP != null && myTrackersVm.checkMeBP.isNotEmpty) ...[
Material(
child: ListView.separated(
itemCount: myTrackersVm.checkMeBP.length,
separatorBuilder: (context, index) => SizedBox(height: 14),
shrinkWrap: true,
reverse: false,
itemBuilder: (context, index) {
CheckMeBPModel checkMeBPModel = myTrackersVm.checkMeBP[index];
return InkWell(
onTap: () => Navigator.pop(context),
child: Container(
decoration: cardRadius(12),
padding: EdgeInsets.all(12.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text("DIA: ${checkMeBPModel.dia} SYS: ${checkMeBPModel.sys}"),
mHeight(4.0),
Text("PR: ${checkMeBPModel.pr}"),
mHeight(4.0),
Text("Date: ${checkMeBPModel.date}"),
],
),
),
);
},
),
)
] else ...[
getNoDataWidget(context),
]
],
);
}
Widget buildGlucoseWidget(MyTrackersViewModel myTrackersVm, BuildContext context) {
return Column(
mainAxisSize: MainAxisSize.max,
children: [
if (myTrackersVm.filesLoader) ...[
Center(child: CircularProgressIndicator())
] else if (myTrackersVm.checkMeGlucose != null && myTrackersVm.checkMeGlucose.isNotEmpty) ...[
Material(
child: ListView.separated(
itemCount: myTrackersVm.checkMeGlucose.length,
separatorBuilder: (context, index) => SizedBox(height: 14),
shrinkWrap: true,
reverse: false,
itemBuilder: (context, index) {
CheckMeGlucoseModel checkMeGlucoseModel = myTrackersVm.checkMeGlucose[index];
return InkWell(
onTap: () => Navigator.pop(context),
child: Container(
decoration: cardRadius(12),
padding: EdgeInsets.all(12.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text("Glucose: ${checkMeGlucoseModel.glu}"),
mHeight(4.0),
Text("Date: ${checkMeGlucoseModel.date}"),
],
),
),
);
},
),
)
] else ...[
getNoDataWidget(context),
]
],
);
}
@override
Widget build(BuildContext context) {
return AppScaffold(
appBarTitle: "${getTrackerNameByEnum(allInOneTrackerTypeEnum)}",
showNewAppBar: true,
isShowDecPage: false,
showNewAppBarTitle: true,
backgroundColor: Color(0xffF8F8F8),
body: Padding(
padding: const EdgeInsets.all(24.0),
child: Consumer(
builder: (BuildContext context, MyTrackersViewModel myTrackersVm, Widget child) {
return getAllInOneOperationWidgets(myTrackersVm, allInOneTrackerTypeEnum, context);
},
),
),
);
}
}

@ -146,4 +146,64 @@ class BleChannel {
return "Error: $e";
}
}
static Future<String> getGlucoseDataFromCheckMePro(String userId) async {
try {
print("----------Flutter getDeviceInfoCheckMePro -------");
final String result = await platform.invokeMethod('getGlucoseDataFromCheckMePro', userId);
print("----------Flutter getDeviceInfoCheckMePro result -------");
print(result);
return result;
} catch (e) {
return "Error: $e";
}
}
static Future<String> getBPDataFromCheckMePro(String userId) async {
try {
print("----------Flutter getBPDataFromCheckMePro -------");
final String result = await platform.invokeMethod('getBPDataFromCheckMePro', userId);
print("----------Flutter getBPDataFromCheckMePro result -------");
print(result);
return result;
} catch (e) {
return "Error: $e";
}
}
static Future<String> getOxiDataFromCheckMePro() async {
try {
print("----------Flutter getOxiDataFromCheckMePro -------");
final String result = await platform.invokeMethod('getOxiDataFromCheckMePro');
print("----------Flutter getOxiDataFromCheckMePro result -------");
print(result);
return result;
} catch (e) {
return "Error: $e";
}
}
static Future<String> getTempDataFromCheckMePro() async {
try {
print("----------Flutter getTempDataFromCheckMePro -------");
final String result = await platform.invokeMethod('getTempDataFromCheckMePro');
print("----------Flutter getTempDataFromCheckMePro result -------");
print(result);
return result;
} catch (e) {
return "Error: $e";
}
}
static Future<String> getEcgDataFromCheckMePro() async {
try {
print("----------Flutter getEcgDataFromCheckMePro -------");
final String result = await platform.invokeMethod('getEcgDataFromCheckMePro');
print("----------Flutter getDeviceInfoCheckMePro result -------");
print(result);
return result;
} catch (e) {
return "Error: $e";
}
}
}

@ -2,10 +2,14 @@ import 'dart:async';
import 'dart:convert';
import 'dart:developer';
import 'package:diplomaticquarterapp/config/size_config.dart';
import 'package:diplomaticquarterapp/pages/medical/my_trackers/ble_models/andesfit_devices/all_in_one_monitor/check_me_info_model.dart';
import 'package:diplomaticquarterapp/pages/medical/my_trackers/ble_models/andesfit_devices/bt_constants.dart';
import 'package:diplomaticquarterapp/pages/medical/my_trackers/ble_device_type_screens/checkme_all_in_one_info_screen.dart';
import 'package:diplomaticquarterapp/pages/medical/my_trackers/ble_models/andesfit_devices/weight_data_model.dart';
import 'package:diplomaticquarterapp/pages/medical/my_trackers/ble_models/ble_devices_model.dart';
import 'package:diplomaticquarterapp/pages/medical/my_trackers/ble_models/checkmepro_all_in_one_models/checkme_bp_model.dart';
import 'package:diplomaticquarterapp/pages/medical/my_trackers/ble_models/checkmepro_all_in_one_models/checkme_ecg_model.dart';
import 'package:diplomaticquarterapp/pages/medical/my_trackers/ble_models/checkmepro_all_in_one_models/checkme_glucose_model.dart';
import 'package:diplomaticquarterapp/pages/medical/my_trackers/ble_models/checkmepro_all_in_one_models/checkme_oxi_model.dart';
import 'package:diplomaticquarterapp/pages/medical/my_trackers/ble_models/checkmepro_all_in_one_models/checkme_temperature_model.dart';
import 'package:diplomaticquarterapp/pages/medical/my_trackers/ble_models/checkmepro_all_in_one_models/checkme_user_model.dart';
import 'package:diplomaticquarterapp/pages/medical/my_trackers/ble_models/viatom_devices/bp_rt_model.dart';
import 'package:diplomaticquarterapp/pages/medical/my_trackers/ble_models/viatom_devices/ecg_file_detail_model.dart';
@ -16,7 +20,6 @@ import 'package:diplomaticquarterapp/uitl/app_toast.dart';
import 'package:diplomaticquarterapp/uitl/ble_utils.dart';
import 'package:diplomaticquarterapp/uitl/date_uitl.dart';
import 'package:diplomaticquarterapp/uitl/utils_new.dart';
import 'package:diplomaticquarterapp/widgets/buttons/defaultButton.dart';
import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart';
import 'package:flutter/services.dart';
import 'package:flutter/cupertino.dart';
@ -34,12 +37,17 @@ String kRealTimeDataBPMeasuring = "RealTimeDataBPMeasuring";
String kRealTimeDataBPResult = "RealTimeDataBPResult";
String kOxyRtParam = "OxyRtParam";
String kDevicesList = "DevicesList";
String kDevicesListCheckMe = "DevicesListCheckMe";
String kCheckMeUsersList = "CheckMeUsersList";
String kRealTimeDataECGMeasuring = "RealTimeDataECGMeasuring"; // This is for the device that measures BP and ECG also Like BP2 0567
String kRealTimeDataECGResult = "RealTimeDataECGResult";
String kRealTimeDataECG = "RealTimeDataECG";
String kFileDetail = "FileDetail";
String kDevicesListCheckMe = "DevicesListCheckMe";
String kCheckMeUsersList = "CheckMeUsersList";
String kTemperatureCheckMePro = "TemperatureCheckMePro";
String kECGCheckMePro = "ECGCheckMePro";
String kOxiCheckMePro = "OxiCheckMePro";
String kGlucoseCheckMePro = "GlucoseCheckMePro";
String kBPCheckMePro = "BPCheckMePro";
class MyTrackersViewModel extends ChangeNotifier {
EventChannel eventChannel = EventChannel('BLE-Platform-Bridge-Event');
@ -222,102 +230,6 @@ class MyTrackersViewModel extends ChangeNotifier {
notifyListeners();
}
List<CheckMeUserInfoModel> checkMeProUsersList;
void updateCheckMeUserInfoModel(List returnData) {
if (checkMeProUsersList != null) {
checkMeProUsersList.clear();
}
checkMeProUsersList = List.generate(returnData.length, (index) => CheckMeUserInfoModel.fromJson(jsonDecode(returnData[index])));
notifyListeners();
}
getCheckMeUsersListDialog(BuildContext context) {
return showDialog(
context: context,
builder: (context) => Container(
decoration: BoxDecoration(borderRadius: BorderRadius.all(Radius.circular(15)), color: Colors.white),
padding: const EdgeInsets.all(20),
margin: const EdgeInsets.symmetric(vertical: 35, horizontal: 30),
child: SingleChildScrollView(
child: Consumer(builder: (BuildContext context, MyTrackersViewModel myTrackersVm, Widget child) {
return Column(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.center,
children: [
Material(
child: Center(
child: Text(
"Users List",
style: TextStyle(
fontSize: SizeConfig.textMultiplier * 1.8,
fontWeight: FontWeight.w600,
letterSpacing: -0.3,
height: 13 / 10,
),
),
),
),
if (myTrackersVm.filesLoader) ...[
Center(child: CircularProgressIndicator())
] else if (myTrackersVm.checkMeProUsersList != null && myTrackersVm.checkMeProUsersList.isNotEmpty) ...[
Material(
child: SizedBox(
height: MediaQuery.of(context).size.height * 0.7,
child: ListView.separated(
itemCount: checkMeProUsersList.length,
separatorBuilder: (context, index) => SizedBox(height: 14),
shrinkWrap: true,
reverse: false,
itemBuilder: (context, index) {
CheckMeUserInfoModel userModel = checkMeProUsersList[index];
return InkWell(
onTap: () => Navigator.pop(context),
child: Container(
decoration: cardRadius(12),
padding: EdgeInsets.all(12.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text("${userModel.id}. ${userModel.name}"),
mHeight(4.0),
Text("Gender: ${userModel.sex == 1 ? "Female" : "Male"}"),
mHeight(4.0),
Text("Height: ${userModel.height}"),
mHeight(4.0),
Text("Weight: ${userModel.height}"),
],
),
),
);
},
),
),
)
] else ...[
Material(
child: Center(
child: Text(
"No Users to show",
style: TextStyle(
fontSize: SizeConfig.textMultiplier * 1.6,
fontWeight: FontWeight.w600,
letterSpacing: -0.3,
height: 13 / 10,
),
),
),
),
]
],
);
}),
),
),
);
}
Widget getFilesListWidget(List<ECGFileDetailModel> filesList, BuildContext context) {
return Material(
child: SizedBox(
@ -412,25 +324,6 @@ class MyTrackersViewModel extends ChangeNotifier {
});
}
Future<void> startSearchingForCheckMePro() async {
log("selectedTracker in startSearchingForCheckMePro: ${currentSelectedTrackerType.name}");
await checkBLEPermissions();
eventChannel.receiveBroadcastStream().listen((event) {
print('Received event---: $event');
print(event['type']);
if (event['type'] == kDevicesListCheckMe) {
List list = [json.decode(event['data'])];
parsesDevicesList(list);
}
if (event['type'] == kCheckMeUsersList) {
updateCheckMeUserInfoModel(event['data']);
}
});
await scanForCheckMe();
}
Future<void> startSearchingForTracker() async {
log("selectedTracker: ${currentSelectedTrackerType.name}");
@ -532,10 +425,6 @@ class MyTrackersViewModel extends ChangeNotifier {
await BleChannel.scanResultsNative([currentSelectedTrackerType.name]);
}
Future<void> scanForCheckMe() async {
await BleChannel.scanCheckMeProNative();
}
Future<void> stopNativeScan() async {
await BleChannel.stopNativeScan();
}
@ -1197,4 +1086,213 @@ class MyTrackersViewModel extends ChangeNotifier {
//// --> CHECK ME PRO
Future<void> scanForCheckMe() async {
await BleChannel.scanCheckMeProNative();
}
Future<void> startSearchingForCheckMePro() async {
log("selectedTracker in startSearchingForCheckMePro: ${currentSelectedTrackerType.name}");
await checkBLEPermissions();
eventChannel.receiveBroadcastStream().listen((event) {
print('Received event---: $event');
print(event['type']);
if (event['type'] == kDevicesListCheckMe) {
List list = [json.decode(event['data'])];
parsesDevicesList(list);
}
if (event['type'] == kCheckMeUsersList) {
updateCheckMeUserInfoModel(event['data']);
}
if (event['type'] == kTemperatureCheckMePro) {
updateCheckMeTemperatureInfoModel(json.decode(event['data']));
}
if (event['type'] == kECGCheckMePro) {
updateCheckMeEcgInfoModel(json.decode(event['data']));
}
if (event['type'] == kBPCheckMePro) {
updateCheckMeBPInfoModel(json.decode(event['data']));
}
if (event['type'] == kOxiCheckMePro) {
updateCheckMeOxiInfoModel(json.decode(event['data']));
}
if (event['type'] == kGlucoseCheckMePro) {
updateCheckMeGlucoseInfoModel(json.decode(event['data']));
}
});
await scanForCheckMe();
}
List<CheckMeUserInfoModel> checkMeProUsersList;
void updateCheckMeUserInfoModel(List returnData) {
if (checkMeProUsersList != null) {
checkMeProUsersList.clear();
}
checkMeProUsersList = List.generate(returnData.length, (index) => CheckMeUserInfoModel.fromJson(jsonDecode(returnData[index])));
notifyListeners();
}
getCheckMeUsersListDialog(TrackerTypeEnum trackerTypeEnum, BuildContext context) {
return showDialog(
context: context,
builder: (context) => Container(
decoration: BoxDecoration(borderRadius: BorderRadius.all(Radius.circular(15)), color: Colors.white),
padding: const EdgeInsets.all(20),
margin: const EdgeInsets.symmetric(vertical: 35, horizontal: 30),
child: SingleChildScrollView(
child: Consumer(builder: (BuildContext context, MyTrackersViewModel myTrackersVm, Widget child) {
return Column(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.center,
children: [
Material(
child: Center(
child: Text(
"Users List",
style: TextStyle(
fontSize: SizeConfig.textMultiplier * 1.8,
fontWeight: FontWeight.w600,
letterSpacing: -0.3,
height: 13 / 10,
),
),
),
),
if (myTrackersVm.filesLoader) ...[
Center(child: CircularProgressIndicator())
] else if (myTrackersVm.checkMeProUsersList != null && myTrackersVm.checkMeProUsersList.isNotEmpty) ...[
Material(
child: SizedBox(
height: MediaQuery.of(context).size.height * 0.7,
child: ListView.separated(
itemCount: checkMeProUsersList.length,
separatorBuilder: (context, index) => SizedBox(height: 14),
shrinkWrap: true,
reverse: false,
itemBuilder: (context, index) {
CheckMeUserInfoModel userModel = checkMeProUsersList[index];
return InkWell(
onTap: () {
if (trackerTypeEnum == TrackerTypeEnum.BloodSugarTracker) {
myTrackersVm.getGlucoseDataFromCheckMePro(userModel.id);
} else if (trackerTypeEnum == TrackerTypeEnum.BloodPressureTracker) {
myTrackersVm.getBPDataFromCheckMePro(userModel.id);
}
Navigator.of(context).pushReplacement(FadePage(page: CheckMeAllInOneInfoScreen(trackerTypeEnum)));
},
child: Container(
decoration: cardRadius(12),
padding: EdgeInsets.all(12.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text("${userModel.id}. ${userModel.name}"),
mHeight(4.0),
Text("Gender: ${userModel.sex == 1 ? "Female" : "Male"}"),
mHeight(4.0),
Text("Height: ${userModel.height}"),
mHeight(4.0),
Text("Weight: ${userModel.height}"),
],
),
),
);
},
),
),
)
] else ...[
Material(
child: Center(
child: Text(
"No Users to show",
style: TextStyle(
fontSize: SizeConfig.textMultiplier * 1.6,
fontWeight: FontWeight.w600,
letterSpacing: -0.3,
height: 13 / 10,
),
),
),
),
]
],
);
}),
),
),
);
}
Future<void> getTempDataFromCheckMePro() async {
await BleChannel.getTempDataFromCheckMePro();
}
List<CheckMeTemperatureModel> checkMeTemperatures;
void updateCheckMeTemperatureInfoModel(List returnData) {
if (checkMeTemperatures != null) {
checkMeTemperatures.clear();
}
checkMeTemperatures = List.generate(returnData.length, (index) => CheckMeTemperatureModel.fromJson(returnData[index]));
notifyListeners();
}
Future<void> getOxiDataFromCheckMePro() async {
await BleChannel.getOxiDataFromCheckMePro();
}
List<CheckMeOxiModel> checkMeOxi;
void updateCheckMeOxiInfoModel(List returnData) {
if (checkMeOxi != null) {
checkMeOxi.clear();
}
checkMeOxi = List.generate(returnData.length, (index) => CheckMeOxiModel.fromJson(returnData[index]));
notifyListeners();
}
Future<void> getECGDataFromCheckMePro() async {
await BleChannel.getEcgDataFromCheckMePro();
}
List<CheckMeECGModel> checkMeEcg;
void updateCheckMeEcgInfoModel(List returnData) {
if (checkMeEcg != null) {
checkMeEcg.clear();
}
checkMeEcg = List.generate(returnData.length, (index) => CheckMeECGModel.fromJson(returnData[index]));
notifyListeners();
}
Future<void> getBPDataFromCheckMePro(String userId) async {
await BleChannel.getBPDataFromCheckMePro(userId);
}
List<CheckMeBPModel> checkMeBP;
void updateCheckMeBPInfoModel(List returnData) {
if (checkMeBP != null) {
checkMeBP.clear();
}
checkMeBP = List.generate(returnData.length, (index) => CheckMeBPModel.fromJson(returnData[index]));
notifyListeners();
}
Future<void> getGlucoseDataFromCheckMePro(String userId) async {
await BleChannel.getGlucoseDataFromCheckMePro(userId);
}
List<CheckMeGlucoseModel> checkMeGlucose;
void updateCheckMeGlucoseInfoModel(List returnData) {
if (checkMeGlucose != null) {
checkMeGlucose.clear();
}
checkMeGlucose = List.generate(returnData.length, (index) => CheckMeGlucoseModel.fromJson(returnData[index]));
notifyListeners();
}
}

Loading…
Cancel
Save