diff --git a/android/app/build.gradle b/android/app/build.gradle index ab0271d6..455ac631 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -48,14 +48,14 @@ configurations.all { //configurations.all { // resolutionStrategy { -// force 'androidx.core:core-ktx:1.6.0' +// force "androidx.core:core:1.13.1" // } //} android { compileSdkVersion 34 // ndkVersion "24.0.8215888" - buildToolsVersion "31.0.0" +// buildToolsVersion "31.0.0" sourceSets { main.java.srcDirs += 'src/main/kotlin' @@ -190,7 +190,7 @@ dependencies { implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.4.2" implementation 'com.android.support:appcompat-v7:27.1.1' testImplementation 'junit:junit:4.12' - implementation project(':blesdk_2301') +// implementation project(':blesdk_2301') // compile "com.jstyle:1770sdk:1.0.2" implementation 'io.reactivex.rxjava3:rxjava:3.1.3' implementation 'io.reactivex.rxjava3:rxandroid:3.0.0' diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index afe87f9a..c0c22dfc 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -9,13 +9,13 @@ - - + + - + - + diff --git a/android/app/src/main/kotlin/com/cloud/diplomaticquarterapp/smart_ring_2301/BleManager.kt b/android/app/src/main/kotlin/com/cloud/diplomaticquarterapp/smart_ring_2301/BleManager.kt index bdead682..619c005b 100644 --- a/android/app/src/main/kotlin/com/cloud/diplomaticquarterapp/smart_ring_2301/BleManager.kt +++ b/android/app/src/main/kotlin/com/cloud/diplomaticquarterapp/smart_ring_2301/BleManager.kt @@ -196,7 +196,7 @@ class BleManager private constructor(var context: Context) { init { if (serviceIntent == null) { serviceIntent = Intent(context, BleService::class.java) - context.bindService(serviceIntent, serviceConnection, Service.BIND_AUTO_CREATE) + context.bindService(serviceIntent!!, serviceConnection, Service.BIND_AUTO_CREATE) } val bluetoothManager = context.getSystemService(Context.BLUETOOTH_SERVICE) as BluetoothManager bluetoothAdapter = bluetoothManager.adapter diff --git a/android/build.gradle b/android/build.gradle index c036b096..2626a68a 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -1,5 +1,5 @@ buildscript { - ext.kotlin_version = '1.8.0' + ext.kotlin_version = '1.8.20' // if (System.properties['os.arch'] == "aarch64") { // // For M1 Users we need to use the NDK 24 which added support for aarch64 @@ -9,7 +9,7 @@ buildscript { // ndkVersion = "21.4.7075529" // } - ext.kotlin_version = '1.8.20' +// ext.kotlin_version = '1.8.20' repositories { google() jcenter() @@ -22,7 +22,7 @@ buildscript { dependencies { classpath 'com.android.tools.build:gradle:7.1.3' - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:2.0.0" + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath 'com.google.gms:google-services:4.3.8' // classpath 'com.google.firebase:firebase-crashlytics-gradle:2.8.1' classpath 'com.huawei.agconnect:agcp:1.5.2.300' diff --git a/lib/pages/login/confirm-login.dart b/lib/pages/login/confirm-login.dart index 608943ac..1020298e 100644 --- a/lib/pages/login/confirm-login.dart +++ b/lib/pages/login/confirm-login.dart @@ -43,6 +43,7 @@ import 'package:local_auth/local_auth.dart'; import 'package:provider/provider.dart'; import 'package:local_auth_ios/types/auth_messages_ios.dart'; + class ConfirmLogin extends StatefulWidget { final Function? changePageViewIndex; final fromRegistration; diff --git a/lib/pages/medical/my_trackers/ble_device_type_screens/andesfit_device_types/andesfit_blood_pressure_connect_screen.dart b/lib/pages/medical/my_trackers/ble_device_type_screens/andesfit_device_types/andesfit_blood_pressure_connect_screen.dart index a4b2d11b..6082686b 100644 --- a/lib/pages/medical/my_trackers/ble_device_type_screens/andesfit_device_types/andesfit_blood_pressure_connect_screen.dart +++ b/lib/pages/medical/my_trackers/ble_device_type_screens/andesfit_device_types/andesfit_blood_pressure_connect_screen.dart @@ -10,14 +10,14 @@ class AndesFitBloodPressureConnectScreen extends StatefulWidget { final BluetoothDevice deviceModel; final bool isEcgAvailable; - const AndesFitBloodPressureConnectScreen({this.deviceModel, this.isEcgAvailable = false}); + const AndesFitBloodPressureConnectScreen({required this.deviceModel, this.isEcgAvailable = false}); @override State createState() => _AndesFitBloodPressureConnectScreenState(); } class _AndesFitBloodPressureConnectScreenState extends State { - MyTrackersViewModel myTrackersVm; + late MyTrackersViewModel myTrackersVm; @override void initState() { @@ -48,7 +48,7 @@ class _AndesFitBloodPressureConnectScreenState extends State createState() => _AndesFitBloodSugarConnectScreenState(); } class _AndesFitBloodSugarConnectScreenState extends State { - MyTrackersViewModel myTrackersVm; + late MyTrackersViewModel myTrackersVm; @override void initState() { @@ -28,7 +27,7 @@ class _AndesFitBloodSugarConnectScreenState extends State createState() => _AndesFitSpirometerConnectScreenState(); } class _AndesFitSpirometerConnectScreenState extends State { - MyTrackersViewModel myTrackersVm; + late MyTrackersViewModel myTrackersVm; @override void initState() { @@ -31,7 +30,7 @@ class _AndesFitSpirometerConnectScreenState extends State createState() => _AndesFitTemperatureConnectScreenState(); } class _AndesFitTemperatureConnectScreenState extends State { - MyTrackersViewModel myTrackersVm; + late MyTrackersViewModel myTrackersVm; @override void initState() { @@ -39,7 +38,7 @@ class _AndesFitTemperatureConnectScreenState extends State createState() => _AndesFitWeightScaleConnectScreenState(); } class _AndesFitWeightScaleConnectScreenState extends State { - MyTrackersViewModel myTrackersVm; + late MyTrackersViewModel myTrackersVm; @override void initState() { @@ -39,7 +38,7 @@ class _AndesFitWeightScaleConnectScreenState extends State { - MyTrackersViewModel myTrackersVm; + late MyTrackersViewModel myTrackersVm; @override void dispose() { @@ -59,9 +59,9 @@ class _BleDevicesScreenState extends State { myTrackersVm.isDeviceSelected = true; log("isDeviceSelected from Screen: ${myTrackersVm.isDeviceSelected}"); FlutterBluePlus.stopScan(); - switch (device.deviceType) { + switch (device.deviceType!) { case TrackerTypeEnum.OxymeterTracker: - if (myTrackersVm.isDeviceFromAndesFit(device.name)) { + if (myTrackersVm.isDeviceFromAndesFit(device.name!)) { return; } myTrackersVm.oxyRtModel = null; @@ -73,23 +73,23 @@ class _BleDevicesScreenState extends State { myTrackersVm.andesfitBpRtResultModel = null; myTrackersVm.selectedAndesFitScanResult = null; myTrackersVm.isAndesfitDeviceConnected = null; - myTrackersVm.bleDevicesStream.cancel(); - if (myTrackersVm.isDeviceFromAndesFit(device.name)) { - Navigator.pushReplacement(context, FadePage(page: AndesFitBloodPressureConnectScreen(deviceModel: device.andesfitBluetoothDevice, isEcgAvailable: false))); + myTrackersVm.bleDevicesStream!.cancel(); + if (myTrackersVm.isDeviceFromAndesFit(device.name!)) { + Navigator.pushReplacement(context, FadePage(page: AndesFitBloodPressureConnectScreen(deviceModel: device.andesfitBluetoothDevice!, isEcgAvailable: false))); return; } - Navigator.pushReplacement(context, FadePage(page: BloodPressureConnectScreen(deviceModel: device, isEcgAvailable: getIfECGAvailableInBPDevice(device.name)))); + Navigator.pushReplacement(context, FadePage(page: BloodPressureConnectScreen(deviceModel: device, isEcgAvailable: getIfECGAvailableInBPDevice(device.name!)))); break; case TrackerTypeEnum.BloodSugarTracker: - if (myTrackersVm.isDeviceFromAndesFit(device.name)) { + if (myTrackersVm.isDeviceFromAndesFit(device.name!)) { myTrackersVm.currentBloodGlucose = null; - Navigator.pushReplacement(context, FadePage(page: AndesFitBloodSugarConnectScreen(deviceModel: device.andesfitBluetoothDevice))); + Navigator.pushReplacement(context, FadePage(page: AndesFitBloodSugarConnectScreen(deviceModel: device.andesfitBluetoothDevice!))); return; } break; case TrackerTypeEnum.ECGTracker: - if (myTrackersVm.isDeviceFromAndesFit(device.name)) { + if (myTrackersVm.isDeviceFromAndesFit(device.name!)) { return; } myTrackersVm.ecgRtModel = null; @@ -97,38 +97,38 @@ class _BleDevicesScreenState extends State { break; case TrackerTypeEnum.WeightScale: - if (myTrackersVm.isDeviceFromAndesFit(device.name)) { + if (myTrackersVm.isDeviceFromAndesFit(device.name!)) { myTrackersVm.andesfitWeightScaleData = null; - Navigator.pushReplacement(context, FadePage(page: AndesFitWeightScaleConnectScreen(deviceModel: device.andesfitBluetoothDevice))); + Navigator.pushReplacement(context, FadePage(page: AndesFitWeightScaleConnectScreen(deviceModel: device.andesfitBluetoothDevice!))); return; } break; case TrackerTypeEnum.Temperature: - if (myTrackersVm.isDeviceFromAndesFit(device.name)) { + if (myTrackersVm.isDeviceFromAndesFit(device.name!)) { myTrackersVm.currentTempInCelsius = null; - Navigator.pushReplacement(context, FadePage(page: AndesFitTemperatureConnectScreen(deviceModel: device.andesfitBluetoothDevice))); + Navigator.pushReplacement(context, FadePage(page: AndesFitTemperatureConnectScreen(deviceModel: device.andesfitBluetoothDevice!))); return; } break; case TrackerTypeEnum.Spirometer: - if (myTrackersVm.isDeviceFromAndesFit(device.name)) { + if (myTrackersVm.isDeviceFromAndesFit(device.name!)) { myTrackersVm.currentTempInCelsius = null; - Navigator.pushReplacement(context, FadePage(page: AndesFitSpirometerConnectScreen(deviceModel: device.andesfitBluetoothDevice))); + Navigator.pushReplacement(context, FadePage(page: AndesFitSpirometerConnectScreen(deviceModel: device.andesfitBluetoothDevice!))); return; } break; case TrackerTypeEnum.SmartRing: - if (myTrackersVm.isDeviceFromAndesFit(device.name)) { + if (myTrackersVm.isDeviceFromAndesFit(device.name!)) { return; } Navigator.pushReplacement(context, FadePage(page: SmartRingAllInOneConnectScreen(deviceModel: device))); break; case TrackerTypeEnum.AllInOneTracker: - if (myTrackersVm.isDeviceFromAndesFit(device.name)) { + if (myTrackersVm.isDeviceFromAndesFit(device.name!)) { return; } Navigator.pushReplacement(context, FadePage(page: CheckMeAllInOneConnectScreen(deviceModel: device))); @@ -150,7 +150,7 @@ class _BleDevicesScreenState extends State { crossAxisAlignment: CrossAxisAlignment.start, children: [ Consumer( - builder: (BuildContext context, MyTrackersViewModel myTrackerVm, Widget child) { + builder: (BuildContext context, MyTrackersViewModel myTrackerVm, Widget? child) { if (myTrackerVm.devicesList.isEmpty) { return Padding( padding: const EdgeInsets.all(24.0), diff --git a/lib/pages/medical/my_trackers/ble_device_type_screens/checkme_all_in-one_connect_screen.dart b/lib/pages/medical/my_trackers/ble_device_type_screens/checkme_all_in-one_connect_screen.dart index 56b32ada..c310e7c0 100644 --- a/lib/pages/medical/my_trackers/ble_device_type_screens/checkme_all_in-one_connect_screen.dart +++ b/lib/pages/medical/my_trackers/ble_device_type_screens/checkme_all_in-one_connect_screen.dart @@ -11,14 +11,14 @@ import 'package:provider/provider.dart'; class CheckMeAllInOneConnectScreen extends StatefulWidget { final BleDeviceModel deviceModel; - const CheckMeAllInOneConnectScreen({this.deviceModel}); + const CheckMeAllInOneConnectScreen({required this.deviceModel}); @override State createState() => _CheckMeAllInOneConnectScreenState(); } class _CheckMeAllInOneConnectScreenState extends State { - MyTrackersViewModel myTrackersVm; + late MyTrackersViewModel myTrackersVm; @override void initState() { @@ -62,7 +62,6 @@ class _CheckMeAllInOneConnectScreenState extends State onTrackerTypePressed(TrackerTypeEnum trackerTypeEnum, MyTrackersViewModel myTrackersViewModel) async { @@ -147,7 +146,7 @@ class _CheckMeAllInOneConnectScreenState extends State SizedBox(height: 14), shrinkWrap: true, reverse: false, itemBuilder: (context, index) { - CheckMeTemperatureModel checkMeTemp = myTrackersVm.checkMeTemperatures[index]; + CheckMeTemperatureModel checkMeTemp = myTrackersVm.checkMeTemperatures![index]; return InkWell( onTap: () => Navigator.pop(context), child: Container( @@ -120,18 +116,18 @@ class CheckMeAllInOneInfoScreen extends StatelessWidget { children: [ if (myTrackersVm.filesLoader) ...[ Center(child: CircularProgressIndicator()) - ] else if (myTrackersVm.checkMeEcg != null && myTrackersVm.checkMeEcg.isNotEmpty) ...[ + ] else if (myTrackersVm.checkMeEcg != null && myTrackersVm.checkMeEcg!.isNotEmpty) ...[ Material( child: ListView.separated( - itemCount: myTrackersVm.checkMeEcg.length, + itemCount: myTrackersVm.checkMeEcg!.length, separatorBuilder: (context, index) => SizedBox(height: 14), shrinkWrap: true, reverse: false, itemBuilder: (context, index) { - CheckMeECGModel checkMeECGModel = myTrackersVm.checkMeEcg[index]; + CheckMeECGModel checkMeECGModel = myTrackersVm.checkMeEcg![index]; return InkWell( onTap: () { - myTrackersVm.getEcgWaveDataFromCheckMePro(checkMeECGModel.timeString); + myTrackersVm.getEcgWaveDataFromCheckMePro(checkMeECGModel.timeString!); Navigator.push(context, MaterialPageRoute(builder: (context) => CheckMeECGInfoScreen(TrackerTypeEnum.ECGTracker))); }, child: Container( @@ -163,15 +159,15 @@ class CheckMeAllInOneInfoScreen extends StatelessWidget { children: [ if (myTrackersVm.filesLoader) ...[ Center(child: CircularProgressIndicator()) - ] else if (myTrackersVm.checkMeOxi != null && myTrackersVm.checkMeOxi.isNotEmpty) ...[ + ] else if (myTrackersVm.checkMeOxi != null && myTrackersVm.checkMeOxi!.isNotEmpty) ...[ Material( child: ListView.separated( - itemCount: myTrackersVm.checkMeOxi.length, + itemCount: myTrackersVm.checkMeOxi!.length, separatorBuilder: (context, index) => SizedBox(height: 14), shrinkWrap: true, reverse: false, itemBuilder: (context, index) { - CheckMeOxiModel checkMeOxiModel = myTrackersVm.checkMeOxi[index]; + CheckMeOxiModel checkMeOxiModel = myTrackersVm.checkMeOxi![index]; return InkWell( onTap: () => Navigator.pop(context), child: Container( @@ -205,15 +201,15 @@ class CheckMeAllInOneInfoScreen extends StatelessWidget { children: [ if (myTrackersVm.filesLoader) ...[ Center(child: CircularProgressIndicator()) - ] else if (myTrackersVm.checkMeBP != null && myTrackersVm.checkMeBP.isNotEmpty) ...[ + ] else if (myTrackersVm.checkMeBP != null && myTrackersVm.checkMeBP!.isNotEmpty) ...[ Material( child: ListView.separated( - itemCount: myTrackersVm.checkMeBP.length, + itemCount: myTrackersVm.checkMeBP!.length, separatorBuilder: (context, index) => SizedBox(height: 14), shrinkWrap: true, reverse: false, itemBuilder: (context, index) { - CheckMeBPModel checkMeBPModel = myTrackersVm.checkMeBP[index]; + CheckMeBPModel checkMeBPModel = myTrackersVm.checkMeBP![index]; return InkWell( onTap: () => Navigator.pop(context), child: Container( @@ -247,15 +243,15 @@ class CheckMeAllInOneInfoScreen extends StatelessWidget { children: [ if (myTrackersVm.filesLoader) ...[ Center(child: CircularProgressIndicator()) - ] else if (myTrackersVm.checkMeGlucose != null && myTrackersVm.checkMeGlucose.isNotEmpty) ...[ + ] else if (myTrackersVm.checkMeGlucose != null && myTrackersVm.checkMeGlucose!.isNotEmpty) ...[ Material( child: ListView.separated( - itemCount: myTrackersVm.checkMeGlucose.length, + itemCount: myTrackersVm.checkMeGlucose!.length, separatorBuilder: (context, index) => SizedBox(height: 14), shrinkWrap: true, reverse: false, itemBuilder: (context, index) { - CheckMeGlucoseModel checkMeGlucoseModel = myTrackersVm.checkMeGlucose[index]; + CheckMeGlucoseModel checkMeGlucoseModel = myTrackersVm.checkMeGlucose![index]; return InkWell( onTap: () => null, child: Container( @@ -293,7 +289,7 @@ class CheckMeAllInOneInfoScreen extends StatelessWidget { child: Padding( padding: const EdgeInsets.all(24.0), child: Consumer( - builder: (BuildContext context, MyTrackersViewModel myTrackersVm, Widget child) { + builder: (BuildContext context, MyTrackersViewModel myTrackersVm, Widget? child) { return getAllInOneOperationWidgets(myTrackersVm, allInOneTrackerTypeEnum, context); }, ), diff --git a/lib/pages/medical/my_trackers/ble_device_type_screens/checkme_ecg_chart_view.dart b/lib/pages/medical/my_trackers/ble_device_type_screens/checkme_ecg_chart_view.dart index a5ba453a..9b6bd0f9 100644 --- a/lib/pages/medical/my_trackers/ble_device_type_screens/checkme_ecg_chart_view.dart +++ b/lib/pages/medical/my_trackers/ble_device_type_screens/checkme_ecg_chart_view.dart @@ -5,11 +5,11 @@ import 'package:flutter/material.dart'; class CheckMeECGChartView extends StatelessWidget { final CheckMeECGWaveModel checkMeECGWave; - CheckMeECGChartView({@required this.checkMeECGWave}); + CheckMeECGChartView({required this.checkMeECGWave}); @override Widget build(BuildContext context) { - List list = checkMeECGWave.bytes; + List list = checkMeECGWave.bytes ?? []; List> mainList = chunkIntList(list, 1250); return ListView.separated( shrinkWrap: true, @@ -28,13 +28,13 @@ class CheckMeECGChartView extends StatelessWidget { horizontalInterval: 30, getDrawingVerticalLine: (value) { return FlLine( - color: Colors.red[300], + color: Colors.red[300]!, strokeWidth: 0.4, ); }, getDrawingHorizontalLine: (value) { return FlLine( - color: Colors.red[300], + color: Colors.red[300]!, strokeWidth: 0.4, ); }, @@ -55,7 +55,7 @@ class CheckMeECGChartView extends StatelessWidget { barWidth: 0.5, dotData: FlDotData(show: false), spots: getDataList(mainList[index]), - colors: [Colors.grey[800]], + color: Colors.grey[800], isStrokeCapRound: true, belowBarData: BarAreaData(show: false), ), diff --git a/lib/pages/medical/my_trackers/ble_device_type_screens/checkme_ecg_info_screen.dart b/lib/pages/medical/my_trackers/ble_device_type_screens/checkme_ecg_info_screen.dart index 168c117a..75185d28 100644 --- a/lib/pages/medical/my_trackers/ble_device_type_screens/checkme_ecg_info_screen.dart +++ b/lib/pages/medical/my_trackers/ble_device_type_screens/checkme_ecg_info_screen.dart @@ -30,6 +30,9 @@ class CheckMeECGInfoScreen extends StatelessWidget { case TrackerTypeEnum.ECGTracker: return "ECG"; + case TrackerTypeEnum.SmartRing: + return "Smart Ring"; + case TrackerTypeEnum.WeightScale: return "Weight Scale"; @@ -42,7 +45,6 @@ class CheckMeECGInfoScreen extends StatelessWidget { case TrackerTypeEnum.AllInOneTracker: return "All in One"; } - return "All in One"; } Widget buildECGDetailsWidget(MyTrackersViewModel myTrackersVm, BuildContext context) { @@ -55,18 +57,18 @@ class CheckMeECGInfoScreen extends StatelessWidget { Row( mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: [ - Text("HR: ${myTrackersVm.checkMeECGWave.hr} bpm"), - Text("ST: ${myTrackersVm.checkMeECGWave.st} mV"), - Text("QRS: ${myTrackersVm.checkMeECGWave.qrs} ms"), + Text("HR: ${myTrackersVm.checkMeECGWave!.hr} bpm"), + Text("ST: ${myTrackersVm.checkMeECGWave!.st} mV"), + Text("QRS: ${myTrackersVm.checkMeECGWave!.qrs} ms"), ], ), mHeight(4.0), Row( mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: [ - Text("PVCS: ${myTrackersVm.checkMeECGWave.pvcs} "), - Text("QTC: ${myTrackersVm.checkMeECGWave.qtc} ms"), - Text("QT: ${myTrackersVm.checkMeECGWave.qt} ms"), + Text("PVCS: ${myTrackersVm.checkMeECGWave!.pvcs} "), + Text("QTC: ${myTrackersVm.checkMeECGWave!.qtc} ms"), + Text("QT: ${myTrackersVm.checkMeECGWave!.qt} ms"), ], ), ], @@ -86,7 +88,7 @@ class CheckMeECGInfoScreen extends StatelessWidget { child: Padding( padding: const EdgeInsets.all(24.0), child: Consumer( - builder: (BuildContext context, MyTrackersViewModel myTrackersVm, Widget child) { + builder: (BuildContext context, MyTrackersViewModel myTrackersVm, Widget? child) { if (myTrackersVm.checkMeECGWave == null) { return Padding( padding: const EdgeInsets.all(24.0), @@ -102,7 +104,7 @@ class CheckMeECGInfoScreen extends StatelessWidget { children: [ buildECGDetailsWidget(myTrackersVm, context), mHeight(20), - CheckMeECGChartView(checkMeECGWave: myTrackersVm.checkMeECGWave), + CheckMeECGChartView(checkMeECGWave: myTrackersVm.checkMeECGWave!), ], ); }, diff --git a/lib/pages/medical/my_trackers/ble_device_type_screens/lepu_device_types/all_in_one_tracker_connect_screen.dart b/lib/pages/medical/my_trackers/ble_device_type_screens/lepu_device_types/all_in_one_tracker_connect_screen.dart index d9b793ab..eee6be12 100644 --- a/lib/pages/medical/my_trackers/ble_device_type_screens/lepu_device_types/all_in_one_tracker_connect_screen.dart +++ b/lib/pages/medical/my_trackers/ble_device_type_screens/lepu_device_types/all_in_one_tracker_connect_screen.dart @@ -1,6 +1,4 @@ -import 'package:diplomaticquarterapp/extensions/string_extensions.dart'; import 'package:diplomaticquarterapp/pages/medical/my_trackers/ble_models/ble_devices_model.dart'; -import 'package:flutter_blue_plus/flutter_blue_plus.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/buttons/defaultButton.dart'; @@ -11,14 +9,14 @@ import 'package:provider/provider.dart'; class AndesAllInOneConnectScreenIos extends StatefulWidget { final BleDeviceModel deviceModel; - const AndesAllInOneConnectScreenIos({this.deviceModel}); + const AndesAllInOneConnectScreenIos({required this.deviceModel}); @override State createState() => _AndesAllInOneConnectScreenState(); } class _AndesAllInOneConnectScreenState extends State { - MyTrackersViewModel myTrackersVm; + late MyTrackersViewModel myTrackersVm; @override void initState() { @@ -37,7 +35,7 @@ class _AndesAllInOneConnectScreenState extends State createState() => _BloodPressureConnectScreenState(); } class _BloodPressureConnectScreenState extends State { - MyTrackersViewModel myTrackersVm; + late MyTrackersViewModel myTrackersVm; @override void initState() { @@ -53,7 +53,7 @@ class _BloodPressureConnectScreenState extends State mHeight(24.0), Column( children: [ - Text(myTrackersViewModel.bpRtMeasuringModel.pressure.toString(), style: TextStyle(fontSize: 100, fontWeight: FontWeight.bold)), + Text(myTrackersViewModel.bpRtMeasuringModel!.pressure.toString(), style: TextStyle(fontSize: 100, fontWeight: FontWeight.bold)), Text("Pressure", style: TextStyle(fontSize: 20)), ], ), @@ -71,28 +71,28 @@ class _BloodPressureConnectScreenState extends State Column( children: [ Text("Sys", style: TextStyle(fontSize: 20)), - Text(myTrackersViewModel.bpRtResultModel.sys.toString(), style: TextStyle(fontSize: 50, fontWeight: FontWeight.bold)), + Text(myTrackersViewModel.bpRtResultModel!.sys.toString(), style: TextStyle(fontSize: 50, fontWeight: FontWeight.bold)), Text("mmHg", style: TextStyle(fontSize: 10)), ], ), Column( children: [ Text("Dia", style: TextStyle(fontSize: 20)), - Text(myTrackersViewModel.bpRtResultModel.dia.toString(), style: TextStyle(fontSize: 50, fontWeight: FontWeight.bold)), + Text(myTrackersViewModel.bpRtResultModel!.dia.toString(), style: TextStyle(fontSize: 50, fontWeight: FontWeight.bold)), Text("mmHg", style: TextStyle(fontSize: 10)), ], ), Column( children: [ Text("♥︎", style: TextStyle(fontSize: 20)), - Text(myTrackersViewModel.bpRtResultModel.pr.toString(), style: TextStyle(fontSize: 50, fontWeight: FontWeight.bold)), + Text(myTrackersViewModel.bpRtResultModel!.pr.toString(), style: TextStyle(fontSize: 50, fontWeight: FontWeight.bold)), Text("/min", style: TextStyle(fontSize: 10)), ], ), ], ), mHeight(30.0), - buildStatusForBP(myTrackersViewModel.bpRtResultModel.result), + buildStatusForBP(myTrackersViewModel.bpRtResultModel!.result!), mHeight(24.0), ], ), @@ -124,14 +124,14 @@ class _BloodPressureConnectScreenState extends State Column( children: [ Text("Duration", style: TextStyle(fontSize: 20)), - Text(myTrackersViewModel.ecgRtMeasuringModelFromBP.curDuration.toString(), style: TextStyle(fontSize: 50, fontWeight: FontWeight.bold)), + Text(myTrackersViewModel.ecgRtMeasuringModelFromBP!.curDuration.toString(), style: TextStyle(fontSize: 50, fontWeight: FontWeight.bold)), Text("seconds", style: TextStyle(fontSize: 10)), ], ), Column( children: [ Text("♥︎", style: TextStyle(fontSize: 20)), - Text(myTrackersViewModel.ecgRtMeasuringModelFromBP.hr.toString(), style: TextStyle(fontSize: 50, fontWeight: FontWeight.bold)), + Text(myTrackersViewModel.ecgRtMeasuringModelFromBP!.hr.toString(), style: TextStyle(fontSize: 50, fontWeight: FontWeight.bold)), Text("/min", style: TextStyle(fontSize: 10)), ], ), @@ -149,14 +149,14 @@ class _BloodPressureConnectScreenState extends State Column( children: [ Text("Regular", style: TextStyle(fontSize: 20)), - Text(myTrackersViewModel.ecgRtResultModelFromBP.diagnosis.isRegular ? "YES" : "NO", style: TextStyle(fontSize: 50, fontWeight: FontWeight.bold)), + Text(myTrackersViewModel.ecgRtResultModelFromBP!.diagnosis!.isRegular! ? "YES" : "NO", style: TextStyle(fontSize: 50, fontWeight: FontWeight.bold)), Text("", style: TextStyle(fontSize: 10)), ], ), Column( children: [ Text("♥︎", style: TextStyle(fontSize: 20)), - Text(myTrackersViewModel.ecgRtResultModelFromBP.hr.toString(), style: TextStyle(fontSize: 50, fontWeight: FontWeight.bold)), + Text(myTrackersViewModel.ecgRtResultModelFromBP!.hr.toString(), style: TextStyle(fontSize: 50, fontWeight: FontWeight.bold)), Text("/min", style: TextStyle(fontSize: 10)), ], ), @@ -197,7 +197,7 @@ class _BloodPressureConnectScreenState extends State // ], // ), mHeight(30.0), - buildStatusForECG(myTrackersViewModel.ecgRtResultModelFromBP.result), + buildStatusForECG(myTrackersViewModel.ecgRtResultModelFromBP!.result!), ], ), ] else ...[ @@ -275,7 +275,7 @@ class _BloodPressureConnectScreenState extends State padding: const EdgeInsets.all(20), margin: const EdgeInsets.symmetric(vertical: 35, horizontal: 30), child: SingleChildScrollView( - child: Consumer(builder: (BuildContext context, MyTrackersViewModel myTrackersVm, Widget child) { + child: Consumer(builder: (BuildContext context, MyTrackersViewModel myTrackersVm, Widget? child) { return Column( mainAxisSize: MainAxisSize.max, mainAxisAlignment: MainAxisAlignment.center, @@ -346,7 +346,7 @@ class _BloodPressureConnectScreenState extends State body: Padding( padding: const EdgeInsets.all(24.0), child: Consumer( - builder: (BuildContext context, MyTrackersViewModel myTrackersViewModel, Widget child) { + builder: (BuildContext context, MyTrackersViewModel myTrackersViewModel, Widget? child) { return Column( crossAxisAlignment: CrossAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.spaceBetween, diff --git a/lib/pages/medical/my_trackers/ble_device_type_screens/lepu_device_types/ecg_connect_screen.dart b/lib/pages/medical/my_trackers/ble_device_type_screens/lepu_device_types/ecg_connect_screen.dart index 0005bac8..6c5ec203 100644 --- a/lib/pages/medical/my_trackers/ble_device_type_screens/lepu_device_types/ecg_connect_screen.dart +++ b/lib/pages/medical/my_trackers/ble_device_type_screens/lepu_device_types/ecg_connect_screen.dart @@ -17,14 +17,14 @@ import 'package:provider/provider.dart'; class ECGConnectScreen extends StatefulWidget { final BleDeviceModel deviceModel; - const ECGConnectScreen({this.deviceModel}); + const ECGConnectScreen({required this.deviceModel}); @override State createState() => _ECGConnectScreenState(); } class _ECGConnectScreenState extends State { - MyTrackersViewModel myTrackersVm; + late MyTrackersViewModel myTrackersVm; @override void initState() { @@ -39,7 +39,7 @@ class _ECGConnectScreenState extends State { super.dispose(); } - Widget buildStatus(int currentStatus) { + Widget buildStatus(int? currentStatus) { String resultStatus = ""; if (currentStatus == 0) { @@ -72,8 +72,6 @@ class _ECGConnectScreenState extends State { ); } - - showHistoryDialog(BuildContext context) { return showDialog( context: context, @@ -82,7 +80,7 @@ class _ECGConnectScreenState extends State { padding: const EdgeInsets.all(20), margin: const EdgeInsets.symmetric(vertical: 35, horizontal: 30), child: SingleChildScrollView( - child: Consumer(builder: (BuildContext context, MyTrackersViewModel myTrackersVm, Widget child) { + child: Consumer(builder: (BuildContext context, MyTrackersViewModel myTrackersVm, Widget? child) { return Column( mainAxisSize: MainAxisSize.max, mainAxisAlignment: MainAxisAlignment.center, @@ -169,21 +167,21 @@ class _ECGConnectScreenState extends State { Column( children: [ Text("Record Time", style: TextStyle(fontSize: 20)), - Text(myTrackersViewModel.ecgRtModel.param.recordTime.toString(), style: TextStyle(fontSize: 50, fontWeight: FontWeight.bold)), + Text(myTrackersViewModel.ecgRtModel!.param!.recordTime.toString(), style: TextStyle(fontSize: 50, fontWeight: FontWeight.bold)), Text("seconds", style: TextStyle(fontSize: 10)), ], ), Column( children: [ Text("♥︎", style: TextStyle(fontSize: 20)), - Text(myTrackersViewModel.ecgRtModel.param.hr.toString(), style: TextStyle(fontSize: 50, fontWeight: FontWeight.bold)), + Text(myTrackersViewModel.ecgRtModel!.param!.hr.toString(), style: TextStyle(fontSize: 50, fontWeight: FontWeight.bold)), Text("/min", style: TextStyle(fontSize: 10)), ], ), ], ), mHeight(30.0), - buildStatus(myTrackersViewModel.ecgRtModel.param.curStatus), + buildStatus(myTrackersViewModel.ecgRtModel!.param!.curStatus!.toInt()), ], ) ], diff --git a/lib/pages/medical/my_trackers/ble_device_type_screens/lepu_device_types/oxymeter_connect_screen.dart b/lib/pages/medical/my_trackers/ble_device_type_screens/lepu_device_types/oxymeter_connect_screen.dart index bd7b7247..e5ac0a2b 100644 --- a/lib/pages/medical/my_trackers/ble_device_type_screens/lepu_device_types/oxymeter_connect_screen.dart +++ b/lib/pages/medical/my_trackers/ble_device_type_screens/lepu_device_types/oxymeter_connect_screen.dart @@ -9,14 +9,14 @@ import 'package:provider/provider.dart'; class OxymeterConnectScreen extends StatefulWidget { final BleDeviceModel deviceModel; - const OxymeterConnectScreen({this.deviceModel}); + const OxymeterConnectScreen({required this.deviceModel}); @override State createState() => _OxymeterConnectScreenState(); } class _OxymeterConnectScreenState extends State { - MyTrackersViewModel myTrackersVm; + late MyTrackersViewModel myTrackersVm; @override void initState() { @@ -42,7 +42,7 @@ class _OxymeterConnectScreenState extends State { body: Padding( padding: const EdgeInsets.all(24.0), child: Consumer( - builder: (BuildContext context, MyTrackersViewModel myTrackersViewModel, Widget child) { + builder: (BuildContext context, MyTrackersViewModel myTrackersViewModel, Widget? child) { return Column( crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.spaceBetween, @@ -58,27 +58,27 @@ class _OxymeterConnectScreenState extends State { Row( mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: [ - if (myTrackersViewModel.oxyRtModel.isProbeOff) ...[ + if (myTrackersViewModel.oxyRtModel!.isProbeOff ?? false) ...[ Text("Check Probe", style: TextStyle(fontSize: 50, fontWeight: FontWeight.bold)), ] else ...[ Column( children: [ Text("SPO₂", style: TextStyle(fontSize: 20)), - Text(myTrackersViewModel.oxyRtModel.spo2.toString(), style: TextStyle(fontSize: 50, fontWeight: FontWeight.bold)), + Text(myTrackersViewModel.oxyRtModel!.spo2.toString(), style: TextStyle(fontSize: 50, fontWeight: FontWeight.bold)), Text("%", style: TextStyle(fontSize: 10)), ], ), Column( children: [ Text("Pulse", style: TextStyle(fontSize: 20)), - Text(myTrackersViewModel.oxyRtModel.pr.toString(), style: TextStyle(fontSize: 50, fontWeight: FontWeight.bold)), + Text(myTrackersViewModel.oxyRtModel!.pr.toString(), style: TextStyle(fontSize: 50, fontWeight: FontWeight.bold)), Text("bpm", style: TextStyle(fontSize: 10)), ], ), Column( children: [ Text("PI", style: TextStyle(fontSize: 20)), - Text(myTrackersViewModel.oxyRtModel.pi.toString(), style: TextStyle(fontSize: 50, fontWeight: FontWeight.bold)), + Text(myTrackersViewModel.oxyRtModel!.pi.toString(), style: TextStyle(fontSize: 50, fontWeight: FontWeight.bold)), Text("%", style: TextStyle(fontSize: 10)), ], ), diff --git a/lib/pages/medical/my_trackers/ble_device_type_screens/select_tracker_type.dart b/lib/pages/medical/my_trackers/ble_device_type_screens/select_tracker_type.dart index aea30209..75cae060 100644 --- a/lib/pages/medical/my_trackers/ble_device_type_screens/select_tracker_type.dart +++ b/lib/pages/medical/my_trackers/ble_device_type_screens/select_tracker_type.dart @@ -9,7 +9,7 @@ import 'package:provider/provider.dart'; class SelectTrackerType extends StatelessWidget { const SelectTrackerType(); - List myTrackersTypeList({BuildContext context}) { + List myTrackersTypeList({required BuildContext context}) { List medical = []; medical.add(InkWell( onTap: () { diff --git a/lib/pages/medical/my_trackers/ble_device_type_screens/smart_ring_connect_screen.dart b/lib/pages/medical/my_trackers/ble_device_type_screens/smart_ring_connect_screen.dart index 7aa66b24..3f65b259 100644 --- a/lib/pages/medical/my_trackers/ble_device_type_screens/smart_ring_connect_screen.dart +++ b/lib/pages/medical/my_trackers/ble_device_type_screens/smart_ring_connect_screen.dart @@ -11,14 +11,14 @@ import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart'; class SmartRingAllInOneConnectScreen extends StatefulWidget { final BleDeviceModel deviceModel; - const SmartRingAllInOneConnectScreen({this.deviceModel}); + const SmartRingAllInOneConnectScreen({required this.deviceModel}); @override State createState() => _SmartRingAllInOneConnectScreenState(); } class _SmartRingAllInOneConnectScreenState extends State { - MyTrackersViewModel myTrackersVm; + late MyTrackersViewModel myTrackersVm; @override void initState() { @@ -59,7 +59,6 @@ class _SmartRingAllInOneConnectScreenState extends State onTrackerTypePressed(SmartRingOperationsEnum smartRingOperationsEnum, MyTrackersViewModel myTrackersViewModel) async { @@ -159,7 +158,7 @@ class _SmartRingAllInOneConnectScreenState extends State { - MyTrackersViewModel myTrackersViewModel; + late MyTrackersViewModel myTrackersViewModel; @override void initState() { @@ -55,10 +55,8 @@ class _SmartRingInfoScreenState extends State { case SmartRingOperationsEnum.SportsMode: return "Sports Mode"; } - return "Battery Level"; } - Widget getAllInOneOperationWidgets(MyTrackersViewModel myTrackersVm, SmartRingOperationsEnum smartRingOperationsEnum, BuildContext context) { switch (smartRingOperationsEnum) { case SmartRingOperationsEnum.Temperature: @@ -77,23 +75,21 @@ class _SmartRingInfoScreenState extends State { return buildBatteryLevelWidget(myTrackersVm, context); case SmartRingOperationsEnum.SportsMode: return buildRtSportsDataSmartRingWidget(myTrackersVm, context); - break; } - return getNoDataWidget(context); } Widget buildTemperatureWidget(MyTrackersViewModel myTrackersVm, BuildContext context) { if (myTrackersVm.filesLoader) { return Center(child: CircularProgressIndicator()); - } else if (myTrackersVm.smartRingTemperatureHistory != null && myTrackersVm.smartRingTemperatureHistory.isNotEmpty) { + } else if (myTrackersVm.smartRingTemperatureHistory != null && myTrackersVm.smartRingTemperatureHistory!.isNotEmpty) { return Expanded( child: ListView.separated( - itemCount: myTrackersVm.smartRingTemperatureHistory.length, + itemCount: myTrackersVm.smartRingTemperatureHistory!.length, separatorBuilder: (context, index) => SizedBox(height: 14), shrinkWrap: true, reverse: false, itemBuilder: (context, index) { - SmartRingGenericModel smartRingTemp = myTrackersVm.smartRingTemperatureHistory[index]; + SmartRingGenericModel smartRingTemp = myTrackersVm.smartRingTemperatureHistory![index]; return InkWell( onTap: () => Navigator.pop(context), child: Container( @@ -120,15 +116,15 @@ class _SmartRingInfoScreenState extends State { Widget buildHeartRateDynamicWidget(MyTrackersViewModel myTrackersVm, BuildContext context) { if (myTrackersVm.filesLoader) { return Center(child: CircularProgressIndicator()); - } else if (myTrackersVm.smartRingHeartRateDynamicHistory != null && myTrackersVm.smartRingHeartRateDynamicHistory.isNotEmpty) { + } else if (myTrackersVm.smartRingHeartRateDynamicHistory != null && myTrackersVm.smartRingHeartRateDynamicHistory!.isNotEmpty) { return Expanded( child: ListView.separated( - itemCount: myTrackersVm.smartRingHeartRateDynamicHistory.length, + itemCount: myTrackersVm.smartRingHeartRateDynamicHistory!.length, separatorBuilder: (context, index) => SizedBox(height: 14), shrinkWrap: true, reverse: false, itemBuilder: (context, index) { - SmartRingGenericModel smartRingHr = myTrackersVm.smartRingHeartRateDynamicHistory[index]; + SmartRingGenericModel smartRingHr = myTrackersVm.smartRingHeartRateDynamicHistory![index]; return InkWell( onTap: () => Navigator.pop(context), child: Container( @@ -155,15 +151,15 @@ class _SmartRingInfoScreenState extends State { Widget buildHeartRateStaticWidget(MyTrackersViewModel myTrackersVm, BuildContext context) { if (myTrackersVm.filesLoader) { return Center(child: CircularProgressIndicator()); - } else if (myTrackersVm.smartRingHeartRateStaticHistory != null && myTrackersVm.smartRingHeartRateStaticHistory.isNotEmpty) { + } else if (myTrackersVm.smartRingHeartRateStaticHistory != null && myTrackersVm.smartRingHeartRateStaticHistory!.isNotEmpty) { return Expanded( child: ListView.separated( - itemCount: myTrackersVm.smartRingHeartRateStaticHistory.length, + itemCount: myTrackersVm.smartRingHeartRateStaticHistory!.length, separatorBuilder: (context, index) => SizedBox(height: 14), shrinkWrap: true, reverse: false, itemBuilder: (context, index) { - SmartRingGenericModel smartRingHr = myTrackersVm.smartRingHeartRateStaticHistory[index]; + SmartRingGenericModel smartRingHr = myTrackersVm.smartRingHeartRateStaticHistory![index]; return InkWell( onTap: () => Navigator.pop(context), child: Container( @@ -202,21 +198,21 @@ class _SmartRingInfoScreenState extends State { Column( children: [ Text("Step", style: TextStyle(fontSize: 20)), - Text(myTrackersViewModel.rtSportDataSmartRingModel.step.toString(), style: TextStyle(fontSize: 50, fontWeight: FontWeight.bold)), + Text(myTrackersViewModel.rtSportDataSmartRingModel!.step.toString(), style: TextStyle(fontSize: 50, fontWeight: FontWeight.bold)), Text("", style: TextStyle(fontSize: 10)), ], ), Column( children: [ Text("Calories", style: TextStyle(fontSize: 20)), - Text(myTrackersViewModel.rtSportDataSmartRingModel.calories.toString(), style: TextStyle(fontSize: 50, fontWeight: FontWeight.bold)), + Text(myTrackersViewModel.rtSportDataSmartRingModel!.calories.toString(), style: TextStyle(fontSize: 50, fontWeight: FontWeight.bold)), Text("kCal", style: TextStyle(fontSize: 10)), ], ), Column( children: [ Text("♥︎", style: TextStyle(fontSize: 20)), - Text(myTrackersViewModel.rtSportDataSmartRingModel.heartRate.toString(), style: TextStyle(fontSize: 50, fontWeight: FontWeight.bold)), + Text(myTrackersViewModel.rtSportDataSmartRingModel!.heartRate.toString(), style: TextStyle(fontSize: 50, fontWeight: FontWeight.bold)), Text("/min", style: TextStyle(fontSize: 10)), ], ), @@ -229,7 +225,7 @@ class _SmartRingInfoScreenState extends State { Column( children: [ Text("Time", style: TextStyle(fontSize: 20)), - Text(myTrackersViewModel.rtSportDataSmartRingModel.exerciseTime.toString(), style: TextStyle(fontSize: 50, fontWeight: FontWeight.bold)), + Text(myTrackersViewModel.rtSportDataSmartRingModel!.exerciseTime.toString(), style: TextStyle(fontSize: 50, fontWeight: FontWeight.bold)), Text("seconds", style: TextStyle(fontSize: 10)), ], ), @@ -248,15 +244,15 @@ class _SmartRingInfoScreenState extends State { Widget buildHrvWidget(MyTrackersViewModel myTrackersVm, BuildContext context) { if (myTrackersVm.filesLoader) { return Center(child: CircularProgressIndicator()); - } else if (myTrackersVm.smartRingHrvHistory != null && myTrackersVm.smartRingHrvHistory.isNotEmpty) { + } else if (myTrackersVm.smartRingHrvHistory != null && myTrackersVm.smartRingHrvHistory!.isNotEmpty) { return Expanded( child: ListView.separated( - itemCount: myTrackersVm.smartRingHrvHistory.length, + itemCount: myTrackersVm.smartRingHrvHistory!.length, separatorBuilder: (context, index) => SizedBox(height: 14), shrinkWrap: true, reverse: false, itemBuilder: (context, index) { - SmartRingHrvModel smartRingHrvModel = myTrackersVm.smartRingHrvHistory[index]; + SmartRingHrvModel smartRingHrvModel = myTrackersVm.smartRingHrvHistory![index]; return InkWell( onTap: () => Navigator.pop(context), child: Container( @@ -293,15 +289,15 @@ class _SmartRingInfoScreenState extends State { Widget buildTotalStepCountHistoryWidget(MyTrackersViewModel myTrackersVm, BuildContext context) { if (myTrackersVm.filesLoader) { return Center(child: CircularProgressIndicator()); - } else if (myTrackersVm.smartRingStepCountHistory != null && myTrackersVm.smartRingStepCountHistory.isNotEmpty) { + } else if (myTrackersVm.smartRingStepCountHistory != null && myTrackersVm.smartRingStepCountHistory!.isNotEmpty) { return Expanded( child: ListView.separated( - itemCount: myTrackersVm.smartRingStepCountHistory.length, + itemCount: myTrackersVm.smartRingStepCountHistory!.length, separatorBuilder: (context, index) => SizedBox(height: 14), shrinkWrap: true, reverse: false, itemBuilder: (context, index) { - SmartRingStepCountModel smartRingStepCountModel = myTrackersVm.smartRingStepCountHistory[index]; + SmartRingStepCountModel smartRingStepCountModel = myTrackersVm.smartRingStepCountHistory![index]; return InkWell( onTap: () => Navigator.pop(context), child: Container( @@ -340,15 +336,15 @@ class _SmartRingInfoScreenState extends State { Widget buildBloodOxygenWidget(MyTrackersViewModel myTrackersVm, BuildContext context) { if (myTrackersVm.filesLoader) { return Center(child: CircularProgressIndicator()); - } else if (myTrackersVm.smartRingBloodOxygenHistory != null && myTrackersVm.smartRingBloodOxygenHistory.isNotEmpty) { + } else if (myTrackersVm.smartRingBloodOxygenHistory != null && myTrackersVm.smartRingBloodOxygenHistory!.isNotEmpty) { return Expanded( child: ListView.separated( - itemCount: myTrackersVm.smartRingBloodOxygenHistory.length, + itemCount: myTrackersVm.smartRingBloodOxygenHistory!.length, separatorBuilder: (context, index) => SizedBox(height: 14), shrinkWrap: true, reverse: false, itemBuilder: (context, index) { - SmartRingGenericModel smartRingGenericModel = myTrackersVm.smartRingBloodOxygenHistory[index]; + SmartRingGenericModel smartRingGenericModel = myTrackersVm.smartRingBloodOxygenHistory![index]; return InkWell( onTap: () => Navigator.pop(context), child: Container( @@ -375,7 +371,7 @@ class _SmartRingInfoScreenState extends State { Widget buildBatteryLevelWidget(MyTrackersViewModel myTrackersVm, BuildContext context) { if (myTrackersVm.filesLoader) { return Center(child: CircularProgressIndicator()); - } else if (myTrackersVm.smartRingBatteryLevel != null && myTrackersVm.smartRingBatteryLevel.isNotEmpty) { + } else if (myTrackersVm.smartRingBatteryLevel != null && myTrackersVm.smartRingBatteryLevel!.isNotEmpty) { return Center( child: Text("Battery Level: ${myTrackersVm.smartRingBatteryLevel}"), ); @@ -397,7 +393,7 @@ class _SmartRingInfoScreenState extends State { child: Column( children: [ Consumer( - builder: (BuildContext context, MyTrackersViewModel myTrackersVm, Widget child) { + builder: (BuildContext context, MyTrackersViewModel myTrackersVm, Widget? child) { return getAllInOneOperationWidgets(myTrackersVm, widget.smartRingOperationsEnum, context); }, ), diff --git a/lib/pages/medical/my_trackers/ble_models/andesfit_devices/weight_data_model.dart b/lib/pages/medical/my_trackers/ble_models/andesfit_devices/weight_data_model.dart index c89e339c..7cbbe706 100644 --- a/lib/pages/medical/my_trackers/ble_models/andesfit_devices/weight_data_model.dart +++ b/lib/pages/medical/my_trackers/ble_models/andesfit_devices/weight_data_model.dart @@ -7,5 +7,5 @@ class WeightScaleData { String muscle; String bmr; - WeightScaleData({this.weight, this.bmi, this.fat, this.bone, this.water, this.muscle, this.bmr}); + WeightScaleData({required this.weight, required this.bmi, required this.fat, required this.bone, required this.water, required this.muscle, required this.bmr}); } diff --git a/lib/pages/medical/my_trackers/ble_models/ble_devices_model.dart b/lib/pages/medical/my_trackers/ble_models/ble_devices_model.dart index 86e403a9..527df466 100644 --- a/lib/pages/medical/my_trackers/ble_models/ble_devices_model.dart +++ b/lib/pages/medical/my_trackers/ble_models/ble_devices_model.dart @@ -2,14 +2,20 @@ import 'package:diplomaticquarterapp/pages/medical/my_trackers/my_trackers_view_ import 'package:flutter_blue_plus/flutter_blue_plus.dart'; class BleDeviceModel { - String macAddr; - int model; - String name; - int rssi; - TrackerTypeEnum deviceType; - BluetoothDevice andesfitBluetoothDevice; + String? macAddr; + int? model; + String? name; + int? rssi; + TrackerTypeEnum? deviceType; + BluetoothDevice? andesfitBluetoothDevice; - BleDeviceModel({this.macAddr, this.model, this.name, this.rssi, this.andesfitBluetoothDevice}); + BleDeviceModel({ + this.macAddr, + this.model, + this.name, + this.rssi, + this.andesfitBluetoothDevice, + }); BleDeviceModel.fromJson(Map json, TrackerTypeEnum trackerType) { macAddr = json['macAddr']; @@ -17,11 +23,11 @@ class BleDeviceModel { name = json['name']; rssi = json['rssi']; deviceType = trackerType; - andesfitBluetoothDevice = null; + andesfitBluetoothDevice = null; // You can remove this line if it's intended to be null by default } @override String toString() { - return 'BleDeviceModel{macAddr: $macAddr, model: $model, name: $name, rssi: $rssi, deviceType: $deviceType, andesfitBluetoothDevice: ${andesfitBluetoothDevice.toString()}'; + return 'BleDeviceModel{macAddr: $macAddr, model: $model, name: $name, rssi: $rssi, deviceType: $deviceType, andesfitBluetoothDevice: ${andesfitBluetoothDevice?.toString()}'; } } diff --git a/lib/pages/medical/my_trackers/ble_models/checkmepro_all_in_one_models/check_me_info_model.dart b/lib/pages/medical/my_trackers/ble_models/checkmepro_all_in_one_models/check_me_info_model.dart index 6d625ff1..853d8498 100644 --- a/lib/pages/medical/my_trackers/ble_models/checkmepro_all_in_one_models/check_me_info_model.dart +++ b/lib/pages/medical/my_trackers/ble_models/checkmepro_all_in_one_models/check_me_info_model.dart @@ -1,28 +1,29 @@ class CheckMeInfoModel { - String region; - String model; - String hardwareVer; - String softwareVer; - String languageVer; - String curLanguage; - String fileVer; - String sPCPVer; - String application; - String sN; - String branchCode; + String? region; + String? model; + String? hardwareVer; + String? softwareVer; + String? languageVer; + String? curLanguage; + String? fileVer; + String? sPCPVer; + String? application; + String? sN; + String? branchCode; - CheckMeInfoModel( - {this.region, - this.model, - this.hardwareVer, - this.softwareVer, - this.languageVer, - this.curLanguage, - this.fileVer, - this.sPCPVer, - this.application, - this.sN, - this.branchCode}); + CheckMeInfoModel({ + required this.region, + required this.model, + required this.hardwareVer, + required this.softwareVer, + required this.languageVer, + required this.curLanguage, + required this.fileVer, + required this.sPCPVer, + required this.application, + required this.sN, + required this.branchCode, + }); @override String toString() { diff --git a/lib/pages/medical/my_trackers/ble_models/checkmepro_all_in_one_models/checkme_bp_model.dart b/lib/pages/medical/my_trackers/ble_models/checkmepro_all_in_one_models/checkme_bp_model.dart index 0dc05d99..d2bdaa08 100644 --- a/lib/pages/medical/my_trackers/ble_models/checkmepro_all_in_one_models/checkme_bp_model.dart +++ b/lib/pages/medical/my_trackers/ble_models/checkmepro_all_in_one_models/checkme_bp_model.dart @@ -1,11 +1,17 @@ class CheckMeBPModel { - String date; - int dia; - int pr; - int sys; - String timeString; + String? date; + int? dia; + int? pr; + int? sys; + String? timeString; - CheckMeBPModel({this.date, this.dia, this.pr, this.sys, this.timeString}); + CheckMeBPModel({ + required this.date, + required this.dia, + required this.pr, + required this.sys, + required this.timeString, + }); CheckMeBPModel.fromJson(Map json) { date = json['date']; diff --git a/lib/pages/medical/my_trackers/ble_models/checkmepro_all_in_one_models/checkme_ecg_model.dart b/lib/pages/medical/my_trackers/ble_models/checkmepro_all_in_one_models/checkme_ecg_model.dart index 3a57e762..419398f6 100644 --- a/lib/pages/medical/my_trackers/ble_models/checkmepro_all_in_one_models/checkme_ecg_model.dart +++ b/lib/pages/medical/my_trackers/ble_models/checkmepro_all_in_one_models/checkme_ecg_model.dart @@ -1,11 +1,17 @@ class CheckMeECGModel { - String date; - int face; - String timeString; - int voice; - int way; + String? date; + int? face; + String? timeString; + int? voice; + int? way; - CheckMeECGModel({this.date, this.face, this.timeString, this.voice, this.way}); + CheckMeECGModel({ + required this.date, + required this.face, + required this.timeString, + required this.voice, + required this.way, + }); CheckMeECGModel.fromJson(Map json) { date = json['date']; diff --git a/lib/pages/medical/my_trackers/ble_models/checkmepro_all_in_one_models/checkme_ecg_wave_model.dart b/lib/pages/medical/my_trackers/ble_models/checkmepro_all_in_one_models/checkme_ecg_wave_model.dart index 6f763f1a..4cbdba43 100644 --- a/lib/pages/medical/my_trackers/ble_models/checkmepro_all_in_one_models/checkme_ecg_wave_model.dart +++ b/lib/pages/medical/my_trackers/ble_models/checkmepro_all_in_one_models/checkme_ecg_wave_model.dart @@ -1,27 +1,42 @@ class CheckMeECGWaveModel { - List bytes; - int hr; - List hrList; - int hrSize; - int pvcs; - int qrs; - int qt; - int qtc; - int result; - int st; - int total; - int waveIntSize; - List waveList; - int waveSize; - int waveViewSize; + List? bytes; + int? hr; + List? hrList; + int? hrSize; + int? pvcs; + int? qrs; + int? qt; + int? qtc; + int? result; + int? st; + int? total; + int? waveIntSize; + List? waveList; + int? waveSize; + int? waveViewSize; - CheckMeECGWaveModel( - {this.bytes, this.hr, this.hrList, this.hrSize, this.pvcs, this.qrs, this.qt, this.qtc, this.result, this.st, this.total, this.waveIntSize, this.waveList, this.waveSize, this.waveViewSize}); + CheckMeECGWaveModel({ + this.bytes, + this.hr, + this.hrList, + this.hrSize, + this.pvcs, + this.qrs, + this.qt, + this.qtc, + this.result, + this.st, + this.total, + this.waveIntSize, + this.waveList, + this.waveSize, + this.waveViewSize, + }); CheckMeECGWaveModel.fromJson(Map json) { - bytes = json['bytes'].cast(); + bytes = json['bytes']?.cast(); hr = json['hr']; - hrList = json['hrList'].cast(); + hrList = json['hrList']?.cast(); hrSize = json['hrSize']; pvcs = json['pvcs']; qrs = json['qrs']; @@ -31,28 +46,28 @@ class CheckMeECGWaveModel { st = json['st']; total = json['total']; waveIntSize = json['waveIntSize']; - waveList = json['waveList'].cast(); + waveList = json['waveList']?.cast(); waveSize = json['waveSize']; waveViewSize = json['waveViewSize']; } Map toJson() { - final Map data = new Map(); - data['bytes'] = this.bytes; - data['hr'] = this.hr; - data['hrList'] = this.hrList; - data['hrSize'] = this.hrSize; - data['pvcs'] = this.pvcs; - data['qrs'] = this.qrs; - data['qt'] = this.qt; - data['qtc'] = this.qtc; - data['result'] = this.result; - data['st'] = this.st; - data['total'] = this.total; - data['waveIntSize'] = this.waveIntSize; - data['waveList'] = this.waveList; - data['waveSize'] = this.waveSize; - data['waveViewSize'] = this.waveViewSize; + final Map data = {}; + data['bytes'] = bytes; + data['hr'] = hr; + data['hrList'] = hrList; + data['hrSize'] = hrSize; + data['pvcs'] = pvcs; + data['qrs'] = qrs; + data['qt'] = qt; + data['qtc'] = qtc; + data['result'] = result; + data['st'] = st; + data['total'] = total; + data['waveIntSize'] = waveIntSize; + data['waveList'] = waveList; + data['waveSize'] = waveSize; + data['waveViewSize'] = waveViewSize; return data; } } diff --git a/lib/pages/medical/my_trackers/ble_models/checkmepro_all_in_one_models/checkme_glucose_model.dart b/lib/pages/medical/my_trackers/ble_models/checkmepro_all_in_one_models/checkme_glucose_model.dart index 6b5d6797..26bf9a31 100644 --- a/lib/pages/medical/my_trackers/ble_models/checkmepro_all_in_one_models/checkme_glucose_model.dart +++ b/lib/pages/medical/my_trackers/ble_models/checkmepro_all_in_one_models/checkme_glucose_model.dart @@ -4,21 +4,25 @@ class CheckMeGlucoseModel { String note; String timeString; - CheckMeGlucoseModel({this.date, this.glu, this.note, this.timeString}); + CheckMeGlucoseModel({ + required this.date, + required this.glu, + required this.note, + required this.timeString, + }); - CheckMeGlucoseModel.fromJson(Map json) { - date = json['date']; - glu = json['glu']; - note = json['note']; - timeString = json['timeString']; - } + CheckMeGlucoseModel.fromJson(Map json) + : date = json['date'], + glu = json['glu'].toDouble(), + note = json['note'], + timeString = json['timeString']; Map toJson() { - final Map data = new Map(); - data['date'] = this.date; - data['glu'] = this.glu; - data['note'] = this.note; - data['timeString'] = this.timeString; + final Map data = {}; + data['date'] = date; + data['glu'] = glu; + data['note'] = note; + data['timeString'] = timeString; return data; } } diff --git a/lib/pages/medical/my_trackers/ble_models/checkmepro_all_in_one_models/checkme_oxi_model.dart b/lib/pages/medical/my_trackers/ble_models/checkmepro_all_in_one_models/checkme_oxi_model.dart index 5167e7ae..b1292a50 100644 --- a/lib/pages/medical/my_trackers/ble_models/checkmepro_all_in_one_models/checkme_oxi_model.dart +++ b/lib/pages/medical/my_trackers/ble_models/checkmepro_all_in_one_models/checkme_oxi_model.dart @@ -1,36 +1,40 @@ class CheckMeOxiModel { - String date; - int face; - int oxy; - num pi; - int pr; - String timeString; - int way; + String? date; + int? face; + int? oxy; + num? pi; + int? pr; + String? timeString; + int? way; - CheckMeOxiModel({this.date, this.face, this.oxy, this.pi, this.pr, this.timeString, this.way}); + CheckMeOxiModel({ + this.date, + this.face, + this.oxy, + this.pi, + this.pr, + this.timeString, + this.way, + }); - CheckMeOxiModel.fromJson(Map json) { - date = json['date']; - face = json['face']; - oxy = json['oxy']; - pi = json['pi']; - pr = json['pr']; - timeString = json['timeString']; - way = json['way']; - } + CheckMeOxiModel.fromJson(Map json) + : date = json['date'], + face = json['face'], + oxy = json['oxy'], + pi = json['pi'], + pr = json['pr'], + timeString = json['timeString'], + way = json['way']; Map toJson() { - final Map data = new Map(); - data['date'] = this.date; - data['face'] = this.face; - data['oxy'] = this.oxy; - data['pi'] = this.pi; - data['pr'] = this.pr; - data['timeString'] = this.timeString; - data['way'] = this.way; + final Map data = {}; + data['date'] = date; + data['face'] = face; + data['oxy'] = oxy; + data['pi'] = pi; + data['pr'] = pr; + data['timeString'] = timeString; + data['way'] = way; return data; } } - - - diff --git a/lib/pages/medical/my_trackers/ble_models/checkmepro_all_in_one_models/checkme_temperature_model.dart b/lib/pages/medical/my_trackers/ble_models/checkmepro_all_in_one_models/checkme_temperature_model.dart index 90265fe9..9a009701 100644 --- a/lib/pages/medical/my_trackers/ble_models/checkmepro_all_in_one_models/checkme_temperature_model.dart +++ b/lib/pages/medical/my_trackers/ble_models/checkmepro_all_in_one_models/checkme_temperature_model.dart @@ -5,25 +5,28 @@ class CheckMeTemperatureModel { double tmp; int way; - CheckMeTemperatureModel({this.date, this.face, this.timeString, this.tmp, this.way}); + CheckMeTemperatureModel({ + required this.date, + required this.face, + required this.timeString, + required this.tmp, + required this.way, + }); - CheckMeTemperatureModel.fromJson(Map json) { - date = json['date']; - face = json['face']; - timeString = json['timeString']; - tmp = json['tmp']; - way = json['way']; - } + CheckMeTemperatureModel.fromJson(Map json) + : date = json['date'], + face = json['face'], + timeString = json['timeString'], + tmp = json['tmp'].toDouble(), + way = json['way']; Map toJson() { - final Map data = new Map(); - data['date'] = this.date; - data['face'] = this.face; - data['timeString'] = this.timeString; - data['tmp'] = this.tmp; - data['way'] = this.way; + final Map data = {}; + data['date'] = date; + data['face'] = face; + data['timeString'] = timeString; + data['tmp'] = tmp; + data['way'] = way; return data; } } - - diff --git a/lib/pages/medical/my_trackers/ble_models/checkmepro_all_in_one_models/checkme_user_model.dart b/lib/pages/medical/my_trackers/ble_models/checkmepro_all_in_one_models/checkme_user_model.dart index faf377fc..8d4d0151 100644 --- a/lib/pages/medical/my_trackers/ble_models/checkmepro_all_in_one_models/checkme_user_model.dart +++ b/lib/pages/medical/my_trackers/ble_models/checkmepro_all_in_one_models/checkme_user_model.dart @@ -1,36 +1,44 @@ class CheckMeUserInfoModel { - String birthday; - int color; - int height; - int ico; - String id; - String name; - int sex; - int weight; + String? birthday; + int? color; + int? height; + int? ico; + String? id; + String? name; + int? sex; + int? weight; - CheckMeUserInfoModel({this.birthday, this.color, this.height, this.ico, this.id, this.name, this.sex, this.weight}); + CheckMeUserInfoModel({ + this.birthday, + this.color, + this.height, + this.ico, + this.id, + this.name, + this.sex, + this.weight, + }); - CheckMeUserInfoModel.fromJson(Map json) { - birthday = json['birthday']; - color = json['color']; - height = json['height']; - ico = json['ico']; - id = json['id']; - name = json['name']; - sex = json['sex']; - weight = json['weight']; - } + CheckMeUserInfoModel.fromJson(Map json) + : birthday = json['birthday'], + color = json['color'], + height = json['height'], + ico = json['ico'], + id = json['id'], + name = json['name'], + sex = json['sex'], + weight = json['weight']; Map toJson() { - final Map data = new Map(); - data['birthday'] = this.birthday; - data['color'] = this.color; - data['height'] = this.height; - data['ico'] = this.ico; - data['id'] = this.id; - data['name'] = this.name; - data['sex'] = this.sex; - data['weight'] = this.weight; + final Map data = {}; + data['birthday'] = birthday; + data['color'] = color; + data['height'] = height; + data['ico'] = ico; + data['id'] = id; + data['name'] = name; + data['sex'] = sex; + data['weight'] = weight; return data; } } diff --git a/lib/pages/medical/my_trackers/ble_models/smart_ring_models.dart b/lib/pages/medical/my_trackers/ble_models/smart_ring_models.dart index 03380caa..009cbd31 100644 --- a/lib/pages/medical/my_trackers/ble_models/smart_ring_models.dart +++ b/lib/pages/medical/my_trackers/ble_models/smart_ring_models.dart @@ -1,7 +1,6 @@ -//TEMPERATURE - import 'package:diplomaticquarterapp/pages/medical/my_trackers/my_trackers_view_model/my_trackers_view_model.dart'; + String getValueKeyBySmartRingOperation(SmartRingOperationsEnum smartRingOperationsEnum) { switch (smartRingOperationsEnum) { case SmartRingOperationsEnum.Temperature: @@ -11,31 +10,34 @@ String getValueKeyBySmartRingOperation(SmartRingOperationsEnum smartRingOperatio case SmartRingOperationsEnum.RealTimeHeartRate: return "arrayDynamicHR"; case SmartRingOperationsEnum.HRV: - break; + return "HRV"; // Return a default value for this case case SmartRingOperationsEnum.BloodOxygen: return "Blood_oxygen"; case SmartRingOperationsEnum.BatteryLevel: return "batteryLevel"; + default: + return "batteryLevel"; // Default case } - return "batteryLevel"; } class SmartRingGenericModel { DateTime date; String value; - SmartRingGenericModel({this.date, this.value}); + SmartRingGenericModel({ + required this.date, + required this.value, + }); - SmartRingGenericModel.fromJson(Map json, SmartRingOperationsEnum smartRingOperationsEnum) { - date = json['date'] != null ? DateTime.parse(((json["date"] as String).replaceAll(".", "-"))) : DateTime.now(); - value = json['${getValueKeyBySmartRingOperation(smartRingOperationsEnum)}']; - } + SmartRingGenericModel.fromJson(Map json, SmartRingOperationsEnum smartRingOperationsEnum) + : date = DateTime.parse(json['date'] ?? ''), + value = json[getValueKeyBySmartRingOperation(smartRingOperationsEnum)] ?? ''; Map toJson(SmartRingOperationsEnum smartRingOperationsEnum) { - final Map data = new Map(); - data['date'] = this.date; - data['${getValueKeyBySmartRingOperation(smartRingOperationsEnum)}'] = this.value; - return data; + return { + 'date': date.toString(), + getValueKeyBySmartRingOperation(smartRingOperationsEnum): value, + }; } } @@ -48,28 +50,35 @@ class SmartRingStepCountModel { String calories; String exerciseMinutes; - SmartRingStepCountModel({this.date, this.goal, this.distance, this.step, this.exerciseTime, this.calories, this.exerciseMinutes}); - - SmartRingStepCountModel.fromJson(Map json) { - date = json['date']; - goal = json['goal']; - distance = json['distance']; - step = json['step']; - exerciseTime = json['ExerciseTime']; - calories = json['calories']; - exerciseMinutes = json['exerciseMinutes']; - } + SmartRingStepCountModel({ + required this.date, + required this.goal, + required this.distance, + required this.step, + required this.exerciseTime, + required this.calories, + required this.exerciseMinutes, + }); + + SmartRingStepCountModel.fromJson(Map json) + : date = json['date'] ?? '', + goal = json['goal'] ?? '', + distance = json['distance'] ?? '', + step = json['step'] ?? '', + exerciseTime = json['ExerciseTime'] ?? '', + calories = json['calories'] ?? '', + exerciseMinutes = json['exerciseMinutes'] ?? ''; Map toJson() { - final Map data = new Map(); - data['date'] = this.date; - data['goal'] = this.goal; - data['distance'] = this.distance; - data['step'] = this.step; - data['ExerciseTime'] = this.exerciseTime; - data['calories'] = this.calories; - data['exerciseMinutes'] = this.exerciseMinutes; - return data; + return { + 'date': date, + 'goal': goal, + 'distance': distance, + 'step': step, + 'ExerciseTime': exerciseTime, + 'calories': calories, + 'exerciseMinutes': exerciseMinutes, + }; } } @@ -82,52 +91,63 @@ class SmartRingHrvModel { String hrv; String vascularAging; - SmartRingHrvModel({this.date, this.highBP, this.stress, this.lowBP, this.heartRate, this.hrv, this.vascularAging}); - - SmartRingHrvModel.fromJson(Map json) { - date = json['date']; - highBP = json['highBP']; - stress = json['stress']; - lowBP = json['lowBP']; - heartRate = json['heartRate']; - hrv = json['hrv']; - vascularAging = json['vascularAging']; - } + SmartRingHrvModel({ + required this.date, + required this.highBP, + required this.stress, + required this.lowBP, + required this.heartRate, + required this.hrv, + required this.vascularAging, + }); + + SmartRingHrvModel.fromJson(Map json) + : date = json['date'] ?? '', + highBP = json['highBP'] ?? '', + stress = json['stress'] ?? '', + lowBP = json['lowBP'] ?? '', + heartRate = json['heartRate'] ?? '', + hrv = json['hrv'] ?? '', + vascularAging = json['vascularAging'] ?? ''; Map toJson() { - final Map data = new Map(); - data['date'] = this.date; - data['highBP'] = this.highBP; - data['stress'] = this.stress; - data['lowBP'] = this.lowBP; - data['heartRate'] = this.heartRate; - data['hrv'] = this.hrv; - data['vascularAging'] = this.vascularAging; - return data; + return { + 'date': date, + 'highBP': highBP, + 'stress': stress, + 'lowBP': lowBP, + 'heartRate': heartRate, + 'hrv': hrv, + 'vascularAging': vascularAging, + }; } } class RtSportDataSmartRingModel { - String heartRate; - String step; - String exerciseTime; - String calories; - - RtSportDataSmartRingModel({this.heartRate, this.step, this.exerciseTime, this.calories}); - - RtSportDataSmartRingModel.fromJson(Map json) { - heartRate = json['heartRate']; - step = json['step']; - exerciseTime = json['ExerciseTime']; - calories = json['calories']; - } + String? heartRate; + String? step; + String? exerciseTime; + String? calories; + + RtSportDataSmartRingModel({ + this.heartRate, + this.step, + this.exerciseTime, + this.calories, + }); + + RtSportDataSmartRingModel.fromJson(Map json) + : heartRate = json['heartRate'], + step = json['step'], + exerciseTime = json['ExerciseTime'], + calories = json['calories']; Map toJson() { - final Map data = new Map(); - data['heartRate'] = this.heartRate; - data['step'] = this.step; - data['ExerciseTime'] = this.exerciseTime; - data['calories'] = this.calories; - return data; + return { + 'heartRate': heartRate, + 'step': step, + 'ExerciseTime': exerciseTime, + 'calories': calories, + }; } } diff --git a/lib/pages/medical/my_trackers/ble_models/viatom_devices/bp_rt_model.dart b/lib/pages/medical/my_trackers/ble_models/viatom_devices/bp_rt_model.dart index dbd6a4c4..bf731150 100644 --- a/lib/pages/medical/my_trackers/ble_models/viatom_devices/bp_rt_model.dart +++ b/lib/pages/medical/my_trackers/ble_models/viatom_devices/bp_rt_model.dart @@ -1,38 +1,37 @@ class BpRtMeasuringModel { - bool deflate; - int pr; - int pressure; - bool pulse; + bool? deflate; + int? pr; + int? pressure; + bool? pulse; BpRtMeasuringModel({this.deflate, this.pr, this.pressure, this.pulse}); - BpRtMeasuringModel.fromJson(Map json) { - deflate = json['deflate']; - pr = json['pr']; - pressure = json['pressure']; - pulse = json['pulse']; - } + BpRtMeasuringModel.fromJson(Map json) + : deflate = json['deflate'], + pr = json['pr'], + pressure = json['pressure'], + pulse = json['pulse']; Map toJson() { - final Map data = new Map(); - data['deflate'] = this.deflate; - data['pr'] = this.pr; - data['pressure'] = this.pressure; - data['pulse'] = this.pulse; + final Map data = {}; + data['deflate'] = deflate; + data['pr'] = pr; + data['pressure'] = pressure; + data['pulse'] = pulse; return data; } } class BpRtResultModel { - bool deflate; - int dia; - int mean; - int pr; - int pressure; - int result; - int sys; - bool isBpHigh; - bool isPulseHigh; + bool? deflate; + int? dia; + int? mean; + int? pr; + int? pressure; + int? result; + int? sys; + bool? isBpHigh; + bool? isPulseHigh; BpRtResultModel({ this.deflate, @@ -46,98 +45,96 @@ class BpRtResultModel { this.isPulseHigh, }); - BpRtResultModel.fromJson(Map json) { - deflate = json['deflate']; - dia = json['dia']; - mean = json['mean']; - pr = json['pr']; - pressure = json['pressure']; - result = json['result']; - sys = json['sys']; - isBpHigh = false; - isPulseHigh = false; - } + BpRtResultModel.fromJson(Map json) + : deflate = json['deflate'], + dia = json['dia'], + mean = json['mean'], + pr = json['pr'], + pressure = json['pressure'], + result = json['result'], + sys = json['sys'], + isBpHigh = false, + isPulseHigh = false; } class ECGRtMeasuringModelFromBP { - int curDuration; - int hr; - bool leadOff; - bool poolSignal; + int? curDuration; + int? hr; + bool? leadOff; + bool? poolSignal; ECGRtMeasuringModelFromBP({this.curDuration, this.hr, this.leadOff, this.poolSignal}); - ECGRtMeasuringModelFromBP.fromJson(Map json) { - curDuration = json['curDuration']; - hr = json['hr']; - leadOff = json['leadOff']; - poolSignal = json['poolSignal']; - } + ECGRtMeasuringModelFromBP.fromJson(Map json) + : curDuration = json['curDuration'], + hr = json['hr'], + leadOff = json['leadOff'], + poolSignal = json['poolSignal']; } class ECGRtResultModelFromBP { - Diagnosis diagnosis; - int hr; - int pvcs; - int qrs; - int qtc; - int result; + Diagnosis? diagnosis; + int? hr; + int? pvcs; + int? qrs; + int? qtc; + int? result; ECGRtResultModelFromBP({this.diagnosis, this.hr, this.pvcs, this.qrs, this.qtc, this.result}); - ECGRtResultModelFromBP.fromJson(Map json) { - diagnosis = json['diagnosis'] != null ? new Diagnosis.fromJson(json['diagnosis']) : null; - hr = json['hr']; - pvcs = json['pvcs']; - qrs = json['qrs']; - qtc = json['qtc']; - result = json['result']; - } + ECGRtResultModelFromBP.fromJson(Map json) + : diagnosis = json['diagnosis'] != null ? Diagnosis.fromJson(json['diagnosis']) : null, + hr = json['hr'], + pvcs = json['pvcs'], + qrs = json['qrs'], + qtc = json['qtc'], + result = json['result']; } + class Diagnosis { - List bytes; - bool isFastHr; - bool isFibrillation; - bool isHeartPause; - bool isIrregular; - bool isLeadOff; - bool isPoorSignal; - bool isProlongedQtc; - bool isPvcs; - bool isRegular; - bool isShortQtc; - bool isSlowHr; - bool isWideQrs; - - Diagnosis( - {this.bytes, - this.isFastHr, - this.isFibrillation, - this.isHeartPause, - this.isIrregular, - this.isLeadOff, - this.isPoorSignal, - this.isProlongedQtc, - this.isPvcs, - this.isRegular, - this.isShortQtc, - this.isSlowHr, - this.isWideQrs}); - - Diagnosis.fromJson(Map json) { - bytes = json['bytes'].cast(); - isFastHr = json['isFastHr']; - isFibrillation = json['isFibrillation']; - isHeartPause = json['isHeartPause']; - isIrregular = json['isIrregular']; - isLeadOff = json['isLeadOff']; - isPoorSignal = json['isPoorSignal']; - isProlongedQtc = json['isProlongedQtc']; - isPvcs = json['isPvcs']; - isRegular = json['isRegular']; - isShortQtc = json['isShortQtc']; - isSlowHr = json['isSlowHr']; - isWideQrs = json['isWideQrs']; - } -} + List? bytes; + bool? isFastHr; + bool? isFibrillation; + bool? isHeartPause; + bool? isIrregular; + bool? isLeadOff; + bool? isPoorSignal; + bool? isProlongedQtc; + bool? isPvcs; + bool? isRegular; + bool? isShortQtc; + bool? isSlowHr; + bool? isWideQrs; + + Diagnosis({ + this.bytes, + this.isFastHr, + this.isFibrillation, + this.isHeartPause, + this.isIrregular, + this.isLeadOff, + this.isPoorSignal, + this.isProlongedQtc, + this.isPvcs, + this.isRegular, + this.isShortQtc, + this.isSlowHr, + this.isWideQrs, + }); + + Diagnosis.fromJson(Map json) + : bytes = json['bytes']?.cast(), + isFastHr = json['isFastHr'], + isFibrillation = json['isFibrillation'], + isHeartPause = json['isHeartPause'], + isIrregular = json['isIrregular'], + isLeadOff = json['isLeadOff'], + isPoorSignal = json['isPoorSignal'], + isProlongedQtc = json['isProlongedQtc'], + isPvcs = json['isPvcs'], + isRegular = json['isRegular'], + isShortQtc = json['isShortQtc'], + isSlowHr = json['isSlowHr'], + isWideQrs = json['isWideQrs']; +} \ No newline at end of file diff --git a/lib/pages/medical/my_trackers/ble_models/viatom_devices/ecg_file_detail_model.dart b/lib/pages/medical/my_trackers/ble_models/viatom_devices/ecg_file_detail_model.dart index 17989e63..866f5ff3 100644 --- a/lib/pages/medical/my_trackers/ble_models/viatom_devices/ecg_file_detail_model.dart +++ b/lib/pages/medical/my_trackers/ble_models/viatom_devices/ecg_file_detail_model.dart @@ -1,25 +1,28 @@ class ECGFileDetailModel { - int duration; - String fileName; - List shortData; - int startTime; + int? duration; + String? fileName; + List? shortData; + int? startTime; - ECGFileDetailModel( - {this.duration, this.fileName, this.shortData, this.startTime}); + ECGFileDetailModel({ + this.duration, + this.fileName, + this.shortData, + this.startTime, + }); - ECGFileDetailModel.fromJson(Map json) { - duration = json['duration']; - fileName = json['fileName']; - shortData = json['shortData'].cast(); - startTime = json['startTime']; - } + ECGFileDetailModel.fromJson(Map json) + : duration = json['duration'], + fileName = json['fileName'], + shortData = json['shortData'].cast(), + startTime = json['startTime']; Map toJson() { - final Map data = new Map(); - data['duration'] = this.duration; - data['fileName'] = this.fileName; - data['shortData'] = this.shortData; - data['startTime'] = this.startTime; + final Map data = {}; + data['duration'] = duration; + data['fileName'] = fileName; + data['shortData'] = shortData; + data['startTime'] = startTime; return data; } } diff --git a/lib/pages/medical/my_trackers/ble_models/viatom_devices/ecg_rt_model.dart b/lib/pages/medical/my_trackers/ble_models/viatom_devices/ecg_rt_model.dart index d4433f3d..c0b0e890 100644 --- a/lib/pages/medical/my_trackers/ble_models/viatom_devices/ecg_rt_model.dart +++ b/lib/pages/medical/my_trackers/ble_models/viatom_devices/ecg_rt_model.dart @@ -1,78 +1,75 @@ class ECGRtModel { - Param param; - Wave wave; + Param? param; + Wave? wave; ECGRtModel({this.param, this.wave}); - ECGRtModel.fromJson(Map json) { - param = json['param'] != null ? new Param.fromJson(json['param']) : null; - wave = json['wave'] != null ? new Wave.fromJson(json['wave']) : null; - } + ECGRtModel.fromJson(Map json) + : param = json['param'] != null ? Param.fromJson(json['param']) : null, + wave = json['wave'] != null ? Wave.fromJson(json['wave']) : null; Map toJson() { - final Map data = new Map(); - if (this.param != null) { - data['param'] = this.param.toJson(); + final Map data = {}; + if (param != null) { + data['param'] = param!.toJson(); } - if (this.wave != null) { - data['wave'] = this.wave.toJson(); + if (wave != null) { + data['wave'] = wave!.toJson(); } return data; } } class Param { - num battery; - num batteryState; - num curStatus; - num hr; - bool poorSignal; - bool rSignal; - num recordTime; + num? battery; + num? batteryState; + num? curStatus; + num? hr; + bool? poorSignal; + bool? rSignal; + num? recordTime; Param({this.battery, this.batteryState, this.curStatus, this.hr, this.poorSignal, this.rSignal, this.recordTime}); - Param.fromJson(Map json) { - battery = json['battery']; - batteryState = json['batteryState']; - curStatus = json['curStatus']; - hr = json['hr']; - poorSignal = json['poorSignal']; - rSignal = json['rSignal']; - recordTime = json['recordTime']; - } + Param.fromJson(Map json) + : battery = json['battery'], + batteryState = json['batteryState'], + curStatus = json['curStatus'], + hr = json['hr'], + poorSignal = json['poorSignal'], + rSignal = json['rSignal'], + recordTime = json['recordTime']; Map toJson() { - final Map data = new Map(); - data['battery'] = this.battery; - data['batteryState'] = this.batteryState; - data['curStatus'] = this.curStatus; - data['hr'] = this.hr; - data['poorSignal'] = this.poorSignal; - data['rSignal'] = this.rSignal; - data['recordTime'] = this.recordTime; + final Map data = {}; + data['battery'] = battery; + data['batteryState'] = batteryState; + data['curStatus'] = curStatus; + data['hr'] = hr; + data['poorSignal'] = poorSignal; + data['rSignal'] = rSignal; + data['recordTime'] = recordTime; return data; } } class Wave { - List ecgBytes; - List ecgFloats; - List ecgShorts; + List? ecgBytes; + List? ecgFloats; + List? ecgShorts; Wave({this.ecgBytes, this.ecgFloats, this.ecgShorts}); - Wave.fromJson(Map json) { - ecgBytes = json['ecgBytes'].cast(); - ecgFloats = json['ecgFloats'].cast(); - ecgShorts = json['ecgShorts'].cast(); - } + Wave.fromJson(Map json) + : ecgBytes = json['ecgBytes']?.cast(), + ecgFloats = json['ecgFloats']?.cast(), + ecgShorts = json['ecgShorts']?.cast(); Map toJson() { - final Map data = new Map(); - data['ecgBytes'] = this.ecgBytes; - data['ecgFloats'] = this.ecgFloats; - data['ecgShorts'] = this.ecgShorts; + final Map data = {}; + data['ecgBytes'] = ecgBytes; + data['ecgFloats'] = ecgFloats; + data['ecgShorts'] = ecgShorts; return data; } } diff --git a/lib/pages/medical/my_trackers/ble_models/viatom_devices/oxy_rt_model.dart b/lib/pages/medical/my_trackers/ble_models/viatom_devices/oxy_rt_model.dart index 5cc32528..ced7cc38 100644 --- a/lib/pages/medical/my_trackers/ble_models/viatom_devices/oxy_rt_model.dart +++ b/lib/pages/medical/my_trackers/ble_models/viatom_devices/oxy_rt_model.dart @@ -1,33 +1,40 @@ class OxyRtModel { - int battery; - bool isCheckProbe; - bool isProbeOff; - bool isPulseSearching; - num pi; - int pr; - int spo2; + int? battery; + bool? isCheckProbe; + bool? isProbeOff; + bool? isPulseSearching; + num? pi; + int? pr; + int? spo2; - OxyRtModel({this.battery, this.isCheckProbe, this.isProbeOff, this.isPulseSearching, this.pi, this.pr, this.spo2}); + OxyRtModel({ + this.battery, + required this.isCheckProbe, + required this.isProbeOff, + required this.isPulseSearching, + required this.pi, + required this.pr, + required this.spo2, + }); - OxyRtModel.fromJson(Map json) { - battery = json['battery']; - isCheckProbe = json['isCheckProbe']; - isProbeOff = json['isProbeOff']; - isPulseSearching = json['isPulseSearching']; - pi = json['pi']; - pr = json['pr']; - spo2 = json['spo2']; - } + OxyRtModel.fromJson(Map json) + : battery = json['battery'], + isCheckProbe = json['isCheckProbe'], + isProbeOff = json['isProbeOff'], + isPulseSearching = json['isPulseSearching'], + pi = json['pi'], + pr = json['pr'], + spo2 = json['spo2']; Map toJson() { - final Map data = new Map(); - data['battery'] = this.battery; - data['isCheckProbe'] = this.isCheckProbe; - data['isProbeOff'] = this.isProbeOff; - data['isPulseSearching'] = this.isPulseSearching; - data['pi'] = this.pi; - data['pr'] = this.pr; - data['spo2'] = this.spo2; + final Map data = {}; + data['battery'] = battery; + data['isCheckProbe'] = isCheckProbe; + data['isProbeOff'] = isProbeOff; + data['isPulseSearching'] = isPulseSearching; + data['pi'] = pi; + data['pr'] = pr; + data['spo2'] = spo2; return data; } } diff --git a/lib/pages/medical/my_trackers/blood_glucose_ble.dart b/lib/pages/medical/my_trackers/blood_glucose_ble.dart index 66df5fe4..3e1adfa7 100644 --- a/lib/pages/medical/my_trackers/blood_glucose_ble.dart +++ b/lib/pages/medical/my_trackers/blood_glucose_ble.dart @@ -19,19 +19,19 @@ class _BloodGlucoseBLEState extends State { String connectionStatus = "disconnected"; String currentBloodGlucose = "0.0"; - BluetoothDevice currentConnectedDevice; + BluetoothDevice? currentConnectedDevice; - StreamSubscription bleDevicesStream; - StreamSubscription bloodGlucoseValuesStream; + StreamSubscription? bleDevicesStream; + StreamSubscription? bloodGlucoseValuesStream; bool isDataMeasured = false; @override void dispose() { super.dispose(); - if (bleDevicesStream != null) bleDevicesStream.cancel(); - if (bloodGlucoseValuesStream != null) bloodGlucoseValuesStream.cancel(); - if (currentConnectedDevice != null) currentConnectedDevice.disconnect(); + if (bleDevicesStream != null) bleDevicesStream!.cancel(); + if (bloodGlucoseValuesStream != null) bloodGlucoseValuesStream!.cancel(); + if (currentConnectedDevice != null) currentConnectedDevice!.disconnect(); } @override @@ -75,7 +75,7 @@ class _BloodGlucoseBLEState extends State { ); } else { FlutterBluePlus.stopScan(); - return SizedBox(height: 300.0, child: BluetoothOffScreen(adapterState: adapterState)); + return SizedBox(height: 300.0, child: BluetoothOffScreen(adapterState: adapterState!)); } }), ), @@ -110,7 +110,7 @@ class _BloodGlucoseBLEState extends State { } if (state == BluetoothConnectionState.connected) { currentConnectedDevice = element.device; - bleDevicesStream.cancel(); + bleDevicesStream!.cancel(); List services = await element.device.discoverServices(); services.forEach((service) { if (service.serviceUuid.toString().toLowerCase() == BLEUtils.BLOOD_GLUCOSE_SERVICE) { @@ -131,13 +131,13 @@ class _BloodGlucoseBLEState extends State { await characteristic.setNotifyValue(true); } }); - return true; + return; } }); } }); await element.device.connect(timeout: Duration(seconds: 35)); - return true; + return; } } }); @@ -163,7 +163,7 @@ class _BloodGlucoseBLEState extends State { num measuredValue = byteArray[9]; results.add("Measured: $measuredValue"); isDataMeasured = true; - bloodGlucoseValuesStream.cancel(); + bloodGlucoseValuesStream!.cancel(); } return results; diff --git a/lib/pages/medical/my_trackers/blood_pressure/BloodPressureBLE.dart b/lib/pages/medical/my_trackers/blood_pressure/BloodPressureBLE.dart index 0ab0c0f1..209eb378 100644 --- a/lib/pages/medical/my_trackers/blood_pressure/BloodPressureBLE.dart +++ b/lib/pages/medical/my_trackers/blood_pressure/BloodPressureBLE.dart @@ -21,27 +21,27 @@ class _BloodPressureBLEState extends State { String currentBPmmHG = "0/0 mmHG"; String currentPulse = "0 PPM"; - BluetoothDevice currentConnectedDevice; + BluetoothDevice? currentConnectedDevice; - StreamSubscription bloodPressureReadingStream; + StreamSubscription? bloodPressureReadingStream; - StreamSubscription bleDevicesStream; - StreamSubscription bleDeviceConnectionStream; + StreamSubscription? bleDevicesStream; + StreamSubscription? bleDeviceConnectionStream; final bleConnectionStatus = ValueNotifier("Disconnected"); - Timer _timer; + Timer? _timer; @override void dispose() { super.dispose(); - if (bleDevicesStream != null) bleDevicesStream.cancel(); - if (currentConnectedDevice != null) currentConnectedDevice.disconnect(); + if (bleDevicesStream != null) bleDevicesStream!.cancel(); + if (currentConnectedDevice != null) currentConnectedDevice!.disconnect(); bleConnectionStatus.dispose(); - if (bleDeviceConnectionStream != null) bleDeviceConnectionStream.cancel(); - if (bloodPressureReadingStream != null) bloodPressureReadingStream.cancel(); - if (currentConnectedDevice != null) currentConnectedDevice.disconnect(); - if (_timer != null && _timer.isActive) _timer.cancel(); + if (bleDeviceConnectionStream != null) bleDeviceConnectionStream!.cancel(); + if (bloodPressureReadingStream != null) bloodPressureReadingStream!.cancel(); + if (currentConnectedDevice != null) currentConnectedDevice!.disconnect(); + if (_timer != null && _timer!.isActive) _timer!.cancel(); } @override @@ -89,7 +89,7 @@ class _BloodPressureBLEState extends State { ); } else { FlutterBluePlus.stopScan(); - return SizedBox(height: 300.0, child: BluetoothOffScreen(adapterState: adapterState)); + return SizedBox(height: 300.0, child: BluetoothOffScreen(adapterState: adapterState!)); } }), ), @@ -112,12 +112,12 @@ class _BloodPressureBLEState extends State { if (element.device.localName.isNotEmpty) { log("blueToothDevices: ${element.device.localName}"); if (element.device.localName.toLowerCase() == "pm101897") { - bleDevicesStream.cancel(); + bleDevicesStream!.cancel(); element.device.connect(timeout: Duration(seconds: 30), autoConnect: false).then((value) async { bleConnectionStatus.value = "Connected..."; print("Device Connected-------"); currentConnectedDevice = element.device; - bleDeviceConnectionStream = currentConnectedDevice.connectionState.listen((event) { + bleDeviceConnectionStream = currentConnectedDevice!.connectionState.listen((event) { if (event == BluetoothConnectionState.disconnected) { bleConnectionStatus.value = "Disconnected..."; print("Device Disconnected-------"); @@ -231,13 +231,13 @@ void startBLEConnectionII() { await characteristic.setNotifyValue(true); } }); - return true; + return ; } }); } }); await element.device.connect(timeout: Duration(seconds: 35)); - return true; + return; } } }); @@ -279,7 +279,7 @@ Map handleBPResult(List byteArray, BluetoothCharacteristic } class BluetoothOffScreen extends StatelessWidget { - const BluetoothOffScreen({Key key, this.adapterState}) : super(key: key); + const BluetoothOffScreen({Key? key, required this.adapterState}) : super(key: key); final BluetoothAdapterState adapterState; diff --git a/lib/pages/medical/my_trackers/ecg_ble.dart b/lib/pages/medical/my_trackers/ecg_ble.dart index df3e4a70..4731cd46 100644 --- a/lib/pages/medical/my_trackers/ecg_ble.dart +++ b/lib/pages/medical/my_trackers/ecg_ble.dart @@ -18,22 +18,22 @@ class ECG_BLE extends StatefulWidget { class _ECG_BLEState extends State { String connectionStatus = "disconnected"; - BluetoothDevice currentConnectedDevice; + BluetoothDevice? currentConnectedDevice; - BluetoothCharacteristic ecgWriteCharacteristic; + BluetoothCharacteristic? ecgWriteCharacteristic; - StreamSubscription bleDevicesStream; - StreamSubscription bleDeviceConnectionStream; + StreamSubscription? bleDevicesStream; + StreamSubscription? bleDeviceConnectionStream; final bleConnectionStatus = ValueNotifier("Disconnected"); @override void dispose() { super.dispose(); - if (bleDevicesStream != null) bleDevicesStream.cancel(); - if (currentConnectedDevice != null) currentConnectedDevice.disconnect(); + if (bleDevicesStream != null) bleDevicesStream!.cancel(); + if (currentConnectedDevice != null) currentConnectedDevice!.disconnect(); bleConnectionStatus.dispose(); - if (bleDeviceConnectionStream != null) bleDeviceConnectionStream.cancel(); + if (bleDeviceConnectionStream != null) bleDeviceConnectionStream!.cancel(); } @override @@ -88,7 +88,7 @@ class _ECG_BLEState extends State { ); } else { FlutterBluePlus.stopScan(); - return SizedBox(height: 300.0, child: BluetoothOffScreen(adapterState: adapterState)); + return SizedBox(height: 300.0, child: BluetoothOffScreen(adapterState: adapterState!)); } }), ), @@ -111,12 +111,12 @@ class _ECG_BLEState extends State { if (element.device.localName.isNotEmpty) { log("blueToothDevices: ${element.device.localName}"); if (element.device.localName.toLowerCase() == "pm101897") { - bleDevicesStream.cancel(); + bleDevicesStream!.cancel(); element.device.connect(timeout: Duration(seconds: 30), autoConnect: false).then((value) async { bleConnectionStatus.value = "Connected..."; print("Device Connected-------"); currentConnectedDevice = element.device; - bleDeviceConnectionStream = currentConnectedDevice.connectionState.listen((event) { + bleDeviceConnectionStream = currentConnectedDevice!.connectionState.listen((event) { if (event == BluetoothConnectionState.disconnected) { bleConnectionStatus.value = "Disconnected..."; print("Device Disconnected-------"); diff --git a/lib/pages/medical/my_trackers/my_trackers_view_model/my_trackers_view_model.dart b/lib/pages/medical/my_trackers/my_trackers_view_model/my_trackers_view_model.dart index 96581cca..390e17ed 100644 --- a/lib/pages/medical/my_trackers/my_trackers_view_model/my_trackers_view_model.dart +++ b/lib/pages/medical/my_trackers/my_trackers_view_model/my_trackers_view_model.dart @@ -70,7 +70,7 @@ class MyTrackersViewModel extends ChangeNotifier { List devicesList = []; - var devicesInfoJsonViatom = { + Map>> devicesInfoJsonViatom = { "OxymeterTracker": [ {"model": "SP-20"}, // DONE {"model": "POD-1"}, // DONE @@ -106,7 +106,7 @@ class MyTrackersViewModel extends ChangeNotifier { ], }; - var devicesInfoJsonAndesfit = { + Map>> devicesInfoJsonAndesfit = { "OxymeterTracker": [ {"model": ""} ], @@ -164,11 +164,11 @@ class MyTrackersViewModel extends ChangeNotifier { "BLE-MSA", ]; - StreamSubscription bleDevicesStream; + StreamSubscription? bleDevicesStream; //************************************* OXYMETER ************************************* - OxyRtModel oxyRtModel; + OxyRtModel? oxyRtModel; void updateOxyRtModel(Map mapData) { oxyRtModel = OxyRtModel.fromJson(mapData); @@ -177,21 +177,21 @@ class MyTrackersViewModel extends ChangeNotifier { // ************************************* BLOOD PRESSURE ************************************* - BpRtMeasuringModel bpRtMeasuringModel; + BpRtMeasuringModel? bpRtMeasuringModel; void updateBpRtMeasuringModel(Map mapData) { bpRtMeasuringModel = BpRtMeasuringModel.fromJson(mapData); notifyListeners(); } - BpRtResultModel bpRtResultModel; + BpRtResultModel? bpRtResultModel; void updateBpRtResultModel(Map mapData) { bpRtResultModel = BpRtResultModel.fromJson(mapData); notifyListeners(); } - String bpCurrentStatus; + String? bpCurrentStatus; updateBpCurrentStatus(var value) { bpCurrentStatus = value; @@ -213,7 +213,7 @@ class MyTrackersViewModel extends ChangeNotifier { filesLoader = value; } - ECGRtModel ecgRtModel; + ECGRtModel? ecgRtModel; void updateEcgRtModel(Map mapData) { ecgRtModel = ECGRtModel.fromJson(mapData); @@ -242,21 +242,21 @@ class MyTrackersViewModel extends ChangeNotifier { notifyListeners(); } - String ecgCurrentStatus; + String? ecgCurrentStatus; updateEcgCurrentStatus(var value) { ecgCurrentStatus = value; notifyListeners(); } - ECGRtMeasuringModelFromBP ecgRtMeasuringModelFromBP; + ECGRtMeasuringModelFromBP? ecgRtMeasuringModelFromBP; void updateEcgRtMeasuringModelFromBP(Map mapData) { ecgRtMeasuringModelFromBP = ECGRtMeasuringModelFromBP.fromJson(mapData); notifyListeners(); } - ECGRtResultModelFromBP ecgRtResultModelFromBP; + ECGRtResultModelFromBP? ecgRtResultModelFromBP; void updateEcgRtResultModelFromBP(Map mapData) { ecgRtResultModelFromBP = ECGRtResultModelFromBP.fromJson(mapData); @@ -282,11 +282,11 @@ class MyTrackersViewModel extends ChangeNotifier { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Text(ecgFileDetailModel.fileName), + Text(ecgFileDetailModel.fileName!), mHeight(6.0), Text("Duration: ${ecgFileDetailModel.duration} seconds"), mHeight(6.0), - Text("Date: ${DateUtil.getDayMonthYearHourMinuteDateFormatted(DateTime.fromMillisecondsSinceEpoch((ecgFileDetailModel.startTime * 1000)))}"), + Text("Date: ${DateUtil.getDayMonthYearHourMinuteDateFormatted(DateTime.fromMillisecondsSinceEpoch((ecgFileDetailModel.startTime! * 1000)))}"), ], ), ), @@ -303,12 +303,12 @@ class MyTrackersViewModel extends ChangeNotifier { if (devicesInfoJsonViatom.containsKey(currentSelectedTrackerType.name)) { allDevices.forEach( (foundDevice) { - List devicesInSelectedType = devicesInfoJsonViatom[currentSelectedTrackerType.name]; - for (var device in devicesInSelectedType) { + List>? devicesInSelectedType = devicesInfoJsonViatom[currentSelectedTrackerType.name]; + for (var device in devicesInSelectedType!) { // log("foundDevice.name: ${foundDevice.name.toString()}"); foundDevice.deviceType = currentSelectedTrackerType; // log("device['model']: ${device['model']}"); - if (device['model'] != "" && foundDevice.name.contains(device['model'])) { + if (device['model'] != "" && foundDevice.name!.contains((device['model'])!)) { devicesList.add(foundDevice); } } @@ -320,7 +320,7 @@ class MyTrackersViewModel extends ChangeNotifier { void filterOutTheSearchedDevicesFlutter(List allDevices) { if (devicesInfoJsonAndesfit.containsKey(currentSelectedTrackerType.name)) { - List devicesInSelectedType = devicesInfoJsonAndesfit[currentSelectedTrackerType.name]; + List> devicesInSelectedType = (devicesInfoJsonAndesfit[currentSelectedTrackerType.name])!; for (var foundDevice in allDevices) { for (var device in devicesInSelectedType) { if (isDeviceSelected) { @@ -330,7 +330,7 @@ class MyTrackersViewModel extends ChangeNotifier { foundDevice.deviceType = currentSelectedTrackerType; log("here1: ${device['model']}"); log("here2: ${foundDevice.name}"); - if (device['model'] != "" && foundDevice.name.contains(device['model'])) { + if (device['model'] != "" && foundDevice.name!.contains(device['model'] as String)) { if (!ifDeviceAlreadyThere(devicesList, foundDevice)) { devicesList.add(foundDevice); notifyListeners(); @@ -427,27 +427,27 @@ class MyTrackersViewModel extends ChangeNotifier { void resetList() { devicesList.clear(); if (bleDevicesStream != null) { - bleDevicesStream.cancel(); + bleDevicesStream!.cancel(); } FlutterBluePlus.stopScan(); secondsToWaitForNativeScan = 5; } Future getEcgFilesList(BleDeviceModel device) async { - await BleChannel.getECGFilesList([device.name, device.model.toString()]); + await BleChannel.getECGFilesList([device.name!, device.model.toString()]); } Future factoryResetECG(BleDeviceModel device) async { - await BleChannel.factoryResetECG([device.name, device.model.toString()]); + await BleChannel.factoryResetECG([device.name!, device.model.toString()]); } Future connectDevice(BleDeviceModel device) async { if (currentSelectedTrackerType == TrackerTypeEnum.AllInOneTracker) { - await BleChannel.connectDeviceCheckMe([device.name, device.model.toString(), currentSelectedTrackerType.name]); + await BleChannel.connectDeviceCheckMe([device.name!, device.model.toString(), currentSelectedTrackerType.name]); } else if (currentSelectedTrackerType == TrackerTypeEnum.SmartRing) { - await BleChannel.connectDeviceSmartRing(device.macAddr); + await BleChannel.connectDeviceSmartRing(device.macAddr!); } else { - await BleChannel.connectDevice([device.name, device.model.toString(), currentSelectedTrackerType.name]); + await BleChannel.connectDevice([device.name!, device.model.toString(), currentSelectedTrackerType.name]); } } @@ -474,8 +474,8 @@ class MyTrackersViewModel extends ChangeNotifier { bleDevicesStream = FlutterBluePlus.scanResults.listen((results) { List blueToothDevices = results; List bleDevices = []; - if (isAndesfitDeviceConnected != null && isAndesfitDeviceConnected) { - bleDevicesStream.cancel(); + if (isAndesfitDeviceConnected != null && isAndesfitDeviceConnected!) { + bleDevicesStream!.cancel(); FlutterBluePlus.stopScan(); return; } @@ -499,7 +499,7 @@ class MyTrackersViewModel extends ChangeNotifier { } bool ifDeviceAlreadyThere(List devicesList, BleDeviceModel device) { - int index = devicesList.indexWhere((element) => element.name.toLowerCase() == device.name.toLowerCase()); + int index = devicesList.indexWhere((element) => element.name!.toLowerCase() == device.name!.toLowerCase()); return index != -1; } @@ -547,7 +547,7 @@ class MyTrackersViewModel extends ChangeNotifier { // *********************** ANDESFIT ************************ - bool isAndesfitDeviceConnected; + bool? isAndesfitDeviceConnected; Future connectAndesfitBloodPressureDevice(BluetoothDevice device) async { device.connectionState.listen((BluetoothConnectionState state) async { @@ -558,7 +558,7 @@ class MyTrackersViewModel extends ChangeNotifier { if (state == BluetoothConnectionState.connected) { isAndesfitDeviceConnected = true; notifyListeners(); - bleDevicesStream.cancel(); + bleDevicesStream!.cancel(); List services = await device.discoverServices(); services.forEach((service) { if (service.serviceUuid.toString().toLowerCase() == BLEUtils.BLOOD_PRESSURE_SERVICE) { @@ -588,28 +588,28 @@ class MyTrackersViewModel extends ChangeNotifier { device.disconnect(); } - ScanResult selectedAndesFitScanResult; + ScanResult? selectedAndesFitScanResult; updateSelectedAndesFitScanResult(var value) { selectedAndesFitScanResult = value; notifyListeners(); } - BpRtMeasuringModel andesfitBpRtMeasuringModel; + BpRtMeasuringModel? andesfitBpRtMeasuringModel; void updateAndesfitBpRtMeasuringModel(BpRtMeasuringModel model) { andesfitBpRtMeasuringModel = model; notifyListeners(); } - BpRtResultModel andesfitBpRtResultModel; + BpRtResultModel? andesfitBpRtResultModel; void updateAndesfitBpRtResultModel(BpRtResultModel model) { andesfitBpRtResultModel = model; notifyListeners(); } - String andesfitBpCurrentStatus; + String? andesfitBpCurrentStatus; updateAndesfitBpCurrentStatus(var value) { andesfitBpCurrentStatus = value; @@ -668,7 +668,7 @@ class MyTrackersViewModel extends ChangeNotifier { } } - WeightScaleData andesfitWeightScaleData; + WeightScaleData? andesfitWeightScaleData; void updateAndesfitWeightScaleData(WeightScaleData model) { andesfitWeightScaleData = model; @@ -689,7 +689,7 @@ class MyTrackersViewModel extends ChangeNotifier { if (state == BluetoothConnectionState.connected) { isAndesfitDeviceConnected = true; notifyListeners(); - bleDevicesStream.cancel(); + bleDevicesStream!.cancel(); List services = await device.discoverServices(); services.forEach((service) { log("services in weightscale: ${service.serviceUuid}"); @@ -733,7 +733,7 @@ class MyTrackersViewModel extends ChangeNotifier { }); await Future.delayed(Duration(milliseconds: 500)).then((value) async { print("Delayed fff1 done"); - if (!characteristic.isNotifying) await characteristic.setNotifyValue(true).catchError((err) {}); + if (!characteristic.isNotifying) await characteristic.setNotifyValue(true); }); } @@ -747,7 +747,7 @@ class MyTrackersViewModel extends ChangeNotifier { await Future.delayed(Duration(milliseconds: 1000)).then((value) async { print("Delayed fff2 done"); - if (!characteristic.isNotifying) await characteristic.setNotifyValue(true).catchError((err) {}); + if (!characteristic.isNotifying) await characteristic.setNotifyValue(true); }); // Write user data to fff2 @@ -846,7 +846,7 @@ class MyTrackersViewModel extends ChangeNotifier { return resSet; } - String currentTempInCelsius; + String? currentTempInCelsius; updateCurrentTempInCelsius(var value) { currentTempInCelsius = value; @@ -862,7 +862,7 @@ class MyTrackersViewModel extends ChangeNotifier { if (state == BluetoothConnectionState.connected) { isAndesfitDeviceConnected = true; notifyListeners(); - bleDevicesStream.cancel(); + bleDevicesStream!.cancel(); List services = await device.discoverServices(); services.forEach((service) { if (service.serviceUuid.toString().toLowerCase() == BLEUtils.TEMPERATURE_SERVICE) { @@ -874,14 +874,14 @@ class MyTrackersViewModel extends ChangeNotifier { print("onValueReceived Stream"); print(event); updateCurrentTempInCelsius(convertIntListToHexTemp(event)); - String currentTempInFahrenheit = ((num.parse(currentTempInCelsius) * 1.8) + 32).toStringAsFixed(1); - String tempCurrentTempInCelsius = currentTempInCelsius + "\u2103" + " / " + currentTempInFahrenheit + "\u2109"; + String currentTempInFahrenheit = ((num.parse(currentTempInCelsius!) * 1.8) + 32).toStringAsFixed(1); + String tempCurrentTempInCelsius = currentTempInCelsius! + "\u2103" + " / " + currentTempInFahrenheit + "\u2109"; updateCurrentTempInCelsius(tempCurrentTempInCelsius); }); await characteristic.setNotifyValue(true); } }); - return true; + return; } }); } @@ -917,9 +917,9 @@ class MyTrackersViewModel extends ChangeNotifier { // return (number * 0.1).toStringAsFixed(1); // } - StreamSubscription bloodSugarValuesStream; + StreamSubscription? bloodSugarValuesStream; - String currentBloodGlucose; + String? currentBloodGlucose; updateCurrentBloodGlucose(var value) { currentBloodGlucose = value; @@ -937,7 +937,7 @@ class MyTrackersViewModel extends ChangeNotifier { if (state == BluetoothConnectionState.connected) { isAndesfitDeviceConnected = true; notifyListeners(); - bleDevicesStream.cancel(); + bleDevicesStream!.cancel(); List services = await device.discoverServices(); services.forEach((service) { if (service.serviceUuid.toString().toLowerCase() == BLEUtils.BLOOD_GLUCOSE_SERVICE) { @@ -954,7 +954,7 @@ class MyTrackersViewModel extends ChangeNotifier { await characteristic.setNotifyValue(true); } }); - return true; + return; } }); } @@ -976,20 +976,20 @@ class MyTrackersViewModel extends ChangeNotifier { num measuredValue = byteArray[9]; results.add("Measured: $measuredValue"); isDataMeasured = true; - bloodSugarValuesStream.cancel(); + bloodSugarValuesStream!.cancel(); } return results; } - BluetoothCharacteristic spirometerReadCharacteristicFf0a; - BluetoothCharacteristic spirometerWriteCharacteristicFf0b; + BluetoothCharacteristic? spirometerReadCharacteristicFf0a; + BluetoothCharacteristic? spirometerWriteCharacteristicFf0b; - String valuePEF; + String? valuePEF; - String valueFEV; + String? valueFEV; - Timer timerForSpirometer; + Timer? timerForSpirometer; bool isHistoryCommandWritten = false; @@ -1002,7 +1002,7 @@ class MyTrackersViewModel extends ChangeNotifier { if (state == BluetoothConnectionState.connected) { isAndesfitDeviceConnected = true; notifyListeners(); - bleDevicesStream.cancel(); + bleDevicesStream!.cancel(); List services = await device.discoverServices(timeout: 5); services.forEach( (service) { @@ -1012,9 +1012,9 @@ class MyTrackersViewModel extends ChangeNotifier { (characteristic) async { if (characteristic.characteristicUuid.toString().toLowerCase() == BLEUtils.BLE_TO_MSA100_READ_CHARACTERISTIC) { spirometerReadCharacteristicFf0a = characteristic; - print(spirometerReadCharacteristicFf0a.characteristicUuid); - print(spirometerReadCharacteristicFf0a.properties.toString()); - spirometerReadCharacteristicFf0a.onValueReceived.listen((event) async { + print(spirometerReadCharacteristicFf0a!.characteristicUuid); + print(spirometerReadCharacteristicFf0a!.properties.toString()); + spirometerReadCharacteristicFf0a!.onValueReceived.listen((event) async { print("onValueReceived ff0a Stream"); print(event); @@ -1024,12 +1024,12 @@ class MyTrackersViewModel extends ChangeNotifier { } if (event[0] == 170) { - timerForSpirometer.cancel(); + timerForSpirometer!.cancel(); // Write get history command to ff0b if (!isHistoryCommandWritten) { await Future.delayed(Duration(milliseconds: 1000)).then((value) async { - spirometerWriteCharacteristicFf0b.write([0x55, 0x01], withoutResponse: false).then((value) { + spirometerWriteCharacteristicFf0b!.write([0x55, 0x01], withoutResponse: false).then((value) { print("----ff0b get history command data written----"); isHistoryCommandWritten = true; }); @@ -1037,13 +1037,13 @@ class MyTrackersViewModel extends ChangeNotifier { // Write get 1st history command to ff0b await Future.delayed(Duration(milliseconds: 1000)).then((value) async { - spirometerWriteCharacteristicFf0b.write([0x55, 0x02, 0x01, 0x00], withoutResponse: false).then((value) async { + spirometerWriteCharacteristicFf0b!.write([0x55, 0x02, 0x01, 0x00], withoutResponse: false).then((value) async { print("----ff0b get 1st history command data written----"); isHistoryCommandWritten = true; // Write delete history command to ff0b await Future.delayed(Duration(milliseconds: 1000)).then((value) async { - spirometerWriteCharacteristicFf0b.write([0x55, 0x03], withoutResponse: false).then((value) async { + spirometerWriteCharacteristicFf0b!.write([0x55, 0x03], withoutResponse: false).then((value) async { print("----ff0b delete history command data written----"); isHistoryCommandWritten = true; await Future.delayed(Duration(milliseconds: 500)).then((value) async { @@ -1061,14 +1061,14 @@ class MyTrackersViewModel extends ChangeNotifier { await Future.delayed(Duration(milliseconds: 1000)).then((value) async { print("Delayed ff0a done"); - if (!spirometerReadCharacteristicFf0a.isNotifying) await spirometerReadCharacteristicFf0a.setNotifyValue(true).catchError((err) {}); + if (!spirometerReadCharacteristicFf0a!.isNotifying) await spirometerReadCharacteristicFf0a!.setNotifyValue(true); }); } if (characteristic.characteristicUuid.toString().toLowerCase() == BLEUtils.BLE_TO_MSA100_WRITE_CHARACTERISTIC) { spirometerWriteCharacteristicFf0b = characteristic; - print(spirometerWriteCharacteristicFf0b.characteristicUuid); - print(spirometerWriteCharacteristicFf0b.properties.toString()); + print(spirometerWriteCharacteristicFf0b!.characteristicUuid); + print(spirometerWriteCharacteristicFf0b!.properties.toString()); // Write ACK command to ff0b every 500 ms startACKCommandToMSA100(); @@ -1109,7 +1109,7 @@ class MyTrackersViewModel extends ChangeNotifier { // Write ACK command to ff0b every 500 ms await Future.delayed(Duration(milliseconds: 1000)).then((value) async { timerForSpirometer = Timer.periodic(Duration(milliseconds: 500), (Timer t) { - spirometerWriteCharacteristicFf0b.write([0x55, 0x06], withoutResponse: false).then((value) { + spirometerWriteCharacteristicFf0b!.write([0x55, 0x06], withoutResponse: false).then((value) { print("----ff0b ACK command data written----"); }); }); @@ -1172,11 +1172,11 @@ class MyTrackersViewModel extends ChangeNotifier { await scanForCheckMe(); } - List checkMeProUsersList; + List? checkMeProUsersList; void updateCheckMeUserInfoModel(List returnData) { if (checkMeProUsersList != null) { - checkMeProUsersList.clear(); + checkMeProUsersList!.clear(); } if (Platform.isIOS) { checkMeProUsersList = List.generate(returnData.length, (index) => CheckMeUserInfoModel.fromJson(returnData[index])); @@ -1195,7 +1195,7 @@ class MyTrackersViewModel extends ChangeNotifier { padding: const EdgeInsets.all(20), margin: const EdgeInsets.symmetric(vertical: 35, horizontal: 30), child: SingleChildScrollView( - child: Consumer(builder: (BuildContext context, MyTrackersViewModel myTrackersVm, Widget child) { + child: Consumer(builder: (BuildContext context, MyTrackersViewModel myTrackersVm, Widget? child) { return Column( mainAxisSize: MainAxisSize.max, mainAxisAlignment: MainAxisAlignment.center, @@ -1205,7 +1205,7 @@ class MyTrackersViewModel extends ChangeNotifier { child: Text( "Users List", style: TextStyle( - fontSize: SizeConfig.textMultiplier * 1.8, + fontSize: SizeConfig.textMultiplier! * 1.8, fontWeight: FontWeight.w600, letterSpacing: -0.3, height: 13 / 10, @@ -1215,23 +1215,23 @@ class MyTrackersViewModel extends ChangeNotifier { ), if (myTrackersVm.filesLoader) ...[ Center(child: CircularProgressIndicator()) - ] else if (myTrackersVm.checkMeProUsersList != null && myTrackersVm.checkMeProUsersList.isNotEmpty) ...[ + ] 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, + itemCount: checkMeProUsersList!.length, separatorBuilder: (context, index) => SizedBox(height: 14), shrinkWrap: true, reverse: false, itemBuilder: (context, index) { - CheckMeUserInfoModel userModel = checkMeProUsersList[index]; + CheckMeUserInfoModel userModel = checkMeProUsersList![index]; return InkWell( onTap: () { if (trackerTypeEnum == TrackerTypeEnum.BloodSugarTracker) { - myTrackersVm.getGlucoseDataFromCheckMePro(userModel.id); + myTrackersVm.getGlucoseDataFromCheckMePro(userModel.id!); } else if (trackerTypeEnum == TrackerTypeEnum.BloodPressureTracker) { - myTrackersVm.getBPDataFromCheckMePro(userModel.id); + myTrackersVm.getBPDataFromCheckMePro(userModel.id!); } Navigator.of(context).pushReplacement(FadePage(page: CheckMeAllInOneInfoScreen(trackerTypeEnum))); }, @@ -1269,16 +1269,16 @@ class MyTrackersViewModel extends ChangeNotifier { Future getTempDataFromCheckMePro() async { if (checkMeTemperatures != null) { - checkMeTemperatures.clear(); + checkMeTemperatures!.clear(); } await BleChannel.getTempDataFromCheckMePro(); } - List checkMeTemperatures; + List? checkMeTemperatures; void updateCheckMeTemperatureInfoModel(List returnData) { if (checkMeTemperatures != null) { - checkMeTemperatures.clear(); + checkMeTemperatures!.clear(); } checkMeTemperatures = List.generate(returnData.length, (index) => CheckMeTemperatureModel.fromJson(returnData[index])); notifyListeners(); @@ -1286,16 +1286,16 @@ class MyTrackersViewModel extends ChangeNotifier { Future getOxiDataFromCheckMePro() async { if (checkMeOxi != null) { - checkMeOxi.clear(); + checkMeOxi!.clear(); } await BleChannel.getOxiDataFromCheckMePro(); } - List checkMeOxi; + List? checkMeOxi; void updateCheckMeOxiInfoModel(List returnData) { if (checkMeOxi != null) { - checkMeOxi.clear(); + checkMeOxi!.clear(); } checkMeOxi = List.generate(returnData.length, (index) => CheckMeOxiModel.fromJson(returnData[index])); notifyListeners(); @@ -1303,16 +1303,16 @@ class MyTrackersViewModel extends ChangeNotifier { Future getECGDataFromCheckMePro() async { if (checkMeEcg != null) { - checkMeEcg.clear(); + checkMeEcg!.clear(); } await BleChannel.getEcgDataFromCheckMePro(); } - List checkMeEcg; + List? checkMeEcg; void updateCheckMeEcgInfoModel(List returnData) { if (checkMeEcg != null) { - checkMeEcg.clear(); + checkMeEcg!.clear(); } checkMeEcg = List.generate(returnData.length, (index) => CheckMeECGModel.fromJson(returnData[index])); notifyListeners(); @@ -1325,7 +1325,7 @@ class MyTrackersViewModel extends ChangeNotifier { await BleChannel.getEcgWaveDataFromCheckMePro(timeString); } - CheckMeECGWaveModel checkMeECGWave; + CheckMeECGWaveModel? checkMeECGWave; void updateCheckMeEcgWaveInfoModel(returnData) { if (checkMeECGWave != null) { @@ -1337,16 +1337,16 @@ class MyTrackersViewModel extends ChangeNotifier { Future getBPDataFromCheckMePro(String userId) async { if (checkMeBP != null) { - checkMeBP.clear(); + checkMeBP!.clear(); } await BleChannel.getBPDataFromCheckMePro(userId); } - List checkMeBP; + List? checkMeBP; void updateCheckMeBPInfoModel(List returnData) { if (checkMeBP != null) { - checkMeBP.clear(); + checkMeBP!.clear(); } checkMeBP = List.generate(returnData.length, (index) => CheckMeBPModel.fromJson(returnData[index])); notifyListeners(); @@ -1354,16 +1354,16 @@ class MyTrackersViewModel extends ChangeNotifier { Future getGlucoseDataFromCheckMePro(String userId) async { if (checkMeGlucose != null) { - checkMeGlucose.clear(); + checkMeGlucose!.clear(); } await BleChannel.getGlucoseDataFromCheckMePro(userId); } - List checkMeGlucose; + List? checkMeGlucose; void updateCheckMeGlucoseInfoModel(List returnData) { if (checkMeGlucose != null) { - checkMeGlucose.clear(); + checkMeGlucose!.clear(); } checkMeGlucose = List.generate(returnData.length, (index) => CheckMeGlucoseModel.fromJson(returnData[index])); notifyListeners(); @@ -1440,7 +1440,7 @@ class MyTrackersViewModel extends ChangeNotifier { if (state == BluetoothConnectionState.connected) { isAndesfitDeviceConnected = true; notifyListeners(); - bleDevicesStream.cancel(); + bleDevicesStream!.cancel(); List services = await device.discoverServices(); services.forEach((service) { if (service.serviceUuid.toString().toLowerCase() == BLEUtils.TEMPERATURE_SERVICE) { @@ -1452,14 +1452,14 @@ class MyTrackersViewModel extends ChangeNotifier { print("onValueReceived Stream"); print(event); updateCurrentTempInCelsius(convertIntListToHexTemp(event)); - String currentTempInFahrenheit = ((num.parse(currentTempInCelsius) * 1.8) + 32).toStringAsFixed(1); - String tempCurrentTempInCelsius = currentTempInCelsius + "\u2103" + " / " + currentTempInFahrenheit + "\u2109"; + String currentTempInFahrenheit = ((num.parse(currentTempInCelsius!) * 1.8) + 32).toStringAsFixed(1); + String tempCurrentTempInCelsius = currentTempInCelsius! + "\u2103" + " / " + currentTempInFahrenheit + "\u2109"; updateCurrentTempInCelsius(tempCurrentTempInCelsius); }); await characteristic.setNotifyValue(true); } }); - return true; + return; } }); } @@ -1469,7 +1469,7 @@ class MyTrackersViewModel extends ChangeNotifier { Future getTemperatureSmartRing() async { if (smartRingTemperatureHistory != null) { - smartRingTemperatureHistory.clear(); + smartRingTemperatureHistory!.clear(); smartRingTemperatureHistory = null; } String data = await BleChannel.getTemperatureSmartRing(); @@ -1516,7 +1516,7 @@ class MyTrackersViewModel extends ChangeNotifier { logger.i(jsonEncode(data.toString())); } - String smartRingBatteryLevel; + String? smartRingBatteryLevel; void updateSmartRingBatteryLevelModel(dynamic returnData) { if (smartRingBatteryLevel != null) { @@ -1529,7 +1529,7 @@ class MyTrackersViewModel extends ChangeNotifier { //TEMPERATURE - List smartRingTemperatureHistory; + List? smartRingTemperatureHistory; void updateSmartRingTemperatureHistory(dynamic returnData) { Map data = returnData; @@ -1539,14 +1539,14 @@ class MyTrackersViewModel extends ChangeNotifier { if (smartRingTemperatureHistory == null) { smartRingTemperatureHistory = list; } else { - smartRingTemperatureHistory.addAll(list); + smartRingTemperatureHistory!.addAll(list); } notifyListeners(); } //BLOOD OXYGEN - List smartRingBloodOxygenHistory; + List? smartRingBloodOxygenHistory; void updateSmartRingBloodOxygenHistory(dynamic returnData) { Map data = returnData; @@ -1556,14 +1556,14 @@ class MyTrackersViewModel extends ChangeNotifier { if (smartRingBloodOxygenHistory == null) { smartRingBloodOxygenHistory = list; } else { - smartRingBloodOxygenHistory.addAll(list); + smartRingBloodOxygenHistory!.addAll(list); } notifyListeners(); } //HEART RATE DYNAMIC - List smartRingHeartRateDynamicHistory; + List? smartRingHeartRateDynamicHistory; void updateSmartRingHeartRateDynamicHistory(dynamic returnData) { Map data = returnData; @@ -1573,13 +1573,13 @@ class MyTrackersViewModel extends ChangeNotifier { if (smartRingHeartRateDynamicHistory == null) { smartRingHeartRateDynamicHistory = list; } else { - smartRingHeartRateDynamicHistory.addAll(list); + smartRingHeartRateDynamicHistory!.addAll(list); } - log("smartRingHeartRateDynamicHistory: ${smartRingHeartRateDynamicHistory.length}"); + log("smartRingHeartRateDynamicHistory: ${smartRingHeartRateDynamicHistory!.length}"); notifyListeners(); } - List smartRingHeartRateStaticHistory; + List? smartRingHeartRateStaticHistory; void updateSmartRingHeartRateStaticHistory(dynamic returnData) { Map data = returnData; @@ -1589,13 +1589,13 @@ class MyTrackersViewModel extends ChangeNotifier { if (smartRingHeartRateStaticHistory == null) { smartRingHeartRateStaticHistory = list; } else { - smartRingHeartRateStaticHistory.addAll(list); + smartRingHeartRateStaticHistory!.addAll(list); } - log("smartRingHeartRateStaticHistory: ${smartRingHeartRateStaticHistory.length}"); + log("smartRingHeartRateStaticHistory: ${smartRingHeartRateStaticHistory!.length}"); notifyListeners(); } - List smartRingHrvHistory; + List? smartRingHrvHistory; void updateSmartRingHrvHistory(dynamic returnData) { Map data = returnData; @@ -1605,13 +1605,13 @@ class MyTrackersViewModel extends ChangeNotifier { if (smartRingHrvHistory == null) { smartRingHrvHistory = list; } else { - smartRingHrvHistory.addAll(list); + smartRingHrvHistory!.addAll(list); } - log("smartRingHrvHistory: ${smartRingHrvHistory.length}"); + log("smartRingHrvHistory: ${smartRingHrvHistory!.length}"); notifyListeners(); } - List smartRingStepCountHistory; + List? smartRingStepCountHistory; void updateSmartRingStepCountHistory(dynamic returnData) { Map data = returnData; @@ -1621,17 +1621,17 @@ class MyTrackersViewModel extends ChangeNotifier { if (smartRingStepCountHistory == null) { smartRingStepCountHistory = list; } else { - smartRingStepCountHistory.addAll(list); + smartRingStepCountHistory!.addAll(list); } - log("smartRingStepCountHistory: ${smartRingStepCountHistory.length}"); + log("smartRingStepCountHistory: ${smartRingStepCountHistory!.length}"); notifyListeners(); } - RtSportDataSmartRingModel rtSportDataSmartRingModel; + RtSportDataSmartRingModel? rtSportDataSmartRingModel; void updateRtSportDataSmartRingModel(dynamic returnData) { Map data = returnData; - rtSportDataSmartRingModel = RtSportDataSmartRingModel.fromJson(data["dicData"] as Map); + rtSportDataSmartRingModel = RtSportDataSmartRingModel.fromJson(data["dicData"] as Map); log("rtSportDataSmartRingModel: ${data.toString()}"); notifyListeners(); } diff --git a/lib/pages/medical/my_trackers/spirometer.dart b/lib/pages/medical/my_trackers/spirometer.dart index f621051b..c22c27f4 100644 --- a/lib/pages/medical/my_trackers/spirometer.dart +++ b/lib/pages/medical/my_trackers/spirometer.dart @@ -17,34 +17,34 @@ class SpirometerBLE extends StatefulWidget { class _SpirometerBLEState extends State { String connectionStatus = "disconnected"; - BluetoothDevice currentConnectedDevice; + BluetoothDevice? currentConnectedDevice; - StreamSubscription bleDevicesStream; - StreamSubscription bleDeviceConnectionStream; + StreamSubscription? bleDevicesStream; + StreamSubscription? bleDeviceConnectionStream; - BluetoothCharacteristic spirometerReadCharacteristicFf0a; - BluetoothCharacteristic spirometerWriteCharacteristicFf0b; + BluetoothCharacteristic? spirometerReadCharacteristicFf0a; + BluetoothCharacteristic? spirometerWriteCharacteristicFf0b; String valuePEF = "0"; String valueFEV = "0.0"; final bleConnectionStatus = ValueNotifier("Disconnected"); - Timer _timer; + Timer? _timer; - Timer _timerRead; + Timer? _timerRead; bool isHistoryCommandWritten = false; @override void dispose() { super.dispose(); - if (currentConnectedDevice != null) currentConnectedDevice.disconnect(); - if (_timer != null && _timer.isActive) _timer.cancel(); - if (_timerRead != null && _timerRead.isActive) _timerRead.cancel(); + if (currentConnectedDevice != null) currentConnectedDevice!.disconnect(); + if (_timer != null && _timer!.isActive) _timer!.cancel(); + if (_timerRead != null && _timerRead!.isActive) _timerRead!.cancel(); bleConnectionStatus.dispose(); - if (bleDevicesStream != null) bleDevicesStream.cancel(); - if (bleDeviceConnectionStream != null) bleDeviceConnectionStream.cancel(); + if (bleDevicesStream != null) bleDevicesStream!.cancel(); + if (bleDeviceConnectionStream != null) bleDeviceConnectionStream!.cancel(); } @override @@ -94,7 +94,7 @@ class _SpirometerBLEState extends State { ); } else { FlutterBluePlus.stopScan(); - return SizedBox(height: 300.0, child: BluetoothOffScreen(adapterState: adapterState)); + return SizedBox(height: 300.0, child: BluetoothOffScreen(adapterState: adapterState!)); } }), ), @@ -118,16 +118,16 @@ class _SpirometerBLEState extends State { (element) { if (element.device.localName.isNotEmpty) { if (element.device.localName.toLowerCase() == "ble-msa") { - bleDevicesStream.cancel(); + bleDevicesStream!.cancel(); element.device.connect(timeout: Duration(seconds: 5), autoConnect: false).then((value) async { bleConnectionStatus.value = "Connected..."; print("Device Connected-------"); currentConnectedDevice = element.device; - bleDeviceConnectionStream = currentConnectedDevice.connectionState.listen((event) { + bleDeviceConnectionStream = currentConnectedDevice!.connectionState.listen((event) { if (event == BluetoothConnectionState.disconnected) { bleConnectionStatus.value = "Disconnected..."; print("Device Disconnected-------"); - if (_timer.isActive) _timer.cancel(); + if (_timer!.isActive) _timer!.cancel(); } }); FlutterBluePlus.stopScan(); @@ -140,9 +140,7 @@ class _SpirometerBLEState extends State { (characteristic) async { if (characteristic.characteristicUuid.toString().toLowerCase() == BLEUtils.BLE_TO_MSA100_READ_CHARACTERISTIC) { spirometerReadCharacteristicFf0a = characteristic; - print(spirometerReadCharacteristicFf0a.characteristicUuid); - print(spirometerReadCharacteristicFf0a.properties.toString()); - spirometerReadCharacteristicFf0a.onValueReceived.listen((event) async { + spirometerReadCharacteristicFf0a!.onValueReceived.listen((event) async { print("onValueReceived ff0a Stream"); print(event); @@ -152,12 +150,12 @@ class _SpirometerBLEState extends State { } if (event[0] == 170) { - _timer.cancel(); + _timer!.cancel(); // Write get history command to ff0b if (!isHistoryCommandWritten) { await Future.delayed(Duration(milliseconds: 1000)).then((value) async { - spirometerWriteCharacteristicFf0b.write([0x55, 0x01], withoutResponse: false).then((value) { + spirometerWriteCharacteristicFf0b!.write([0x55, 0x01], withoutResponse: false).then((value) { print("----ff0b get history command data written----"); isHistoryCommandWritten = true; }); @@ -165,13 +163,13 @@ class _SpirometerBLEState extends State { // Write get 1st history command to ff0b await Future.delayed(Duration(milliseconds: 1000)).then((value) async { - spirometerWriteCharacteristicFf0b.write([0x55, 0x02, 0x01, 0x00], withoutResponse: false).then((value) async { + spirometerWriteCharacteristicFf0b!.write([0x55, 0x02, 0x01, 0x00], withoutResponse: false).then((value) async { print("----ff0b get 1st history command data written----"); isHistoryCommandWritten = true; // Write delete history command to ff0b await Future.delayed(Duration(milliseconds: 1000)).then((value) async { - spirometerWriteCharacteristicFf0b.write([0x55, 0x03], withoutResponse: false).then((value) async { + spirometerWriteCharacteristicFf0b!.write([0x55, 0x03], withoutResponse: false).then((value) async { print("----ff0b delete history command data written----"); isHistoryCommandWritten = true; await Future.delayed(Duration(milliseconds: 500)).then((value) async { @@ -189,15 +187,12 @@ class _SpirometerBLEState extends State { await Future.delayed(Duration(milliseconds: 1000)).then((value) async { print("Delayed ff0a done"); - if (!spirometerReadCharacteristicFf0a.isNotifying) await spirometerReadCharacteristicFf0a.setNotifyValue(true).catchError((err) {}); + if (!spirometerReadCharacteristicFf0a!.isNotifying) await spirometerReadCharacteristicFf0a!.setNotifyValue(true).catchError((err) {}); }); } if (characteristic.characteristicUuid.toString().toLowerCase() == BLEUtils.BLE_TO_MSA100_WRITE_CHARACTERISTIC) { spirometerWriteCharacteristicFf0b = characteristic; - print(spirometerWriteCharacteristicFf0b.characteristicUuid); - print(spirometerWriteCharacteristicFf0b.properties.toString()); - // Write ACK command to ff0b every 500 ms startACKCommandToMSA100(); @@ -230,7 +225,7 @@ class _SpirometerBLEState extends State { // Write ACK command to ff0b every 500 ms await Future.delayed(Duration(milliseconds: 1000)).then((value) async { _timer = Timer.periodic(Duration(milliseconds: 500), (Timer t) { - spirometerWriteCharacteristicFf0b.write([0x55, 0x06], withoutResponse: false).then((value) { + spirometerWriteCharacteristicFf0b!.write([0x55, 0x06], withoutResponse: false).then((value) { print("----ff0b ACK command data written----"); }); }); @@ -264,7 +259,7 @@ class _SpirometerBLEState extends State { } class BluetoothOffScreen extends StatelessWidget { - const BluetoothOffScreen({Key key, this.adapterState}) : super(key: key); + const BluetoothOffScreen({Key? key, required this.adapterState}) : super(key: key); final BluetoothAdapterState adapterState; diff --git a/lib/pages/medical/my_trackers/temperature.dart b/lib/pages/medical/my_trackers/temperature.dart index f8c77790..c2bab286 100644 --- a/lib/pages/medical/my_trackers/temperature.dart +++ b/lib/pages/medical/my_trackers/temperature.dart @@ -1,4 +1,3 @@ -import 'dart:io'; import 'package:diplomaticquarterapp/theme/colors.dart'; import 'package:diplomaticquarterapp/uitl/ble_utils.dart'; @@ -19,12 +18,12 @@ class _TemperatureHomePageState extends State { String connectionStatus = "disconnected"; String currentTempInCelsius = "0.0"; - BluetoothDevice currentConnectedDevice; + BluetoothDevice? currentConnectedDevice; @override void dispose() { super.dispose(); - currentConnectedDevice.disconnect(timeout: 15); + currentConnectedDevice!.disconnect(timeout: 15); } @override @@ -68,7 +67,7 @@ class _TemperatureHomePageState extends State { ); } else { FlutterBluePlus.stopScan(); - return SizedBox(height: 300.0, child: BluetoothOffScreen(adapterState: adapterState)); + return SizedBox(height: 300.0, child: BluetoothOffScreen(adapterState: adapterState!)); } }), ), @@ -122,13 +121,13 @@ class _TemperatureHomePageState extends State { await characteristic.setNotifyValue(true); } }); - return true; + return; } }); } }); await element.device.connect(timeout: Duration(seconds: 35)); - return true; + return ; } } }); diff --git a/lib/pages/medical/my_trackers/viatom_devices/ekg_chart_view.dart b/lib/pages/medical/my_trackers/viatom_devices/ekg_chart_view.dart index 425abbfb..eaf4a248 100644 --- a/lib/pages/medical/my_trackers/viatom_devices/ekg_chart_view.dart +++ b/lib/pages/medical/my_trackers/viatom_devices/ekg_chart_view.dart @@ -4,9 +4,9 @@ import 'package:fl_chart/fl_chart.dart'; import 'package:flutter/material.dart'; class EKGChartView extends StatefulWidget { - ECGFileDetailModel ekgFileDetailResponseModel; + final ECGFileDetailModel ekgFileDetailResponseModel; - EKGChartView({@required this.ekgFileDetailResponseModel}); + EKGChartView({required this.ekgFileDetailResponseModel}); @override State createState() => _EKGChartViewState(); @@ -22,7 +22,7 @@ class _EKGChartViewState extends State { @override Widget build(BuildContext context) { - List list = widget.ekgFileDetailResponseModel.shortData; + List list = widget.ekgFileDetailResponseModel.shortData ?? []; List> mainList = chunkIntList(list, 1250); return AppScaffold( @@ -48,13 +48,13 @@ class _EKGChartViewState extends State { horizontalInterval: 30, getDrawingVerticalLine: (value) { return FlLine( - color: Colors.red[300], + color: Colors.red[300]!, strokeWidth: 0.4, ); }, getDrawingHorizontalLine: (value) { return FlLine( - color: Colors.red[300], + color: Colors.red[300]!, strokeWidth: 0.4, ); }, @@ -75,7 +75,7 @@ class _EKGChartViewState extends State { barWidth: 0.5, dotData: FlDotData(show: false), spots: getDataList(mainList[index]), - colors: [Colors.grey[800]], + color: Colors.grey[800], isStrokeCapRound: true, belowBarData: BarAreaData(show: false), ), diff --git a/lib/pages/medical/my_trackers/viatom_devices/ekg_tracker_ble.dart b/lib/pages/medical/my_trackers/viatom_devices/ekg_tracker_ble.dart index cd4697cb..c70e2175 100644 --- a/lib/pages/medical/my_trackers/viatom_devices/ekg_tracker_ble.dart +++ b/lib/pages/medical/my_trackers/viatom_devices/ekg_tracker_ble.dart @@ -36,29 +36,27 @@ class _EKG_BLEState extends State { List ekgFileDetailResponseModelList = []; - ECGRtModel ekgRealTimeDataResponseModel; + ECGRtModel? ekgRealTimeDataResponseModel; List ecgBytesAllDataList = []; - Timer timer; - List<_ChartData> chartData; - int count; - ChartSeriesController _chartSeriesController; + Timer? timer; + late List<_ChartData> chartData; + int count = 0; + ChartSeriesController? _chartSeriesController; @override void dispose() { ekgValueNotifier.dispose(); super.dispose(); BleChannel.disconnect(); - timer?.cancel(); - chartData.clear(); + timer!.cancel(); + chartData!.clear(); _chartSeriesController = null; } @override void initState() { - // TODO: implement initState - count = 19; chartData = <_ChartData>[ _ChartData(0, 42), @@ -95,7 +93,7 @@ class _EKG_BLEState extends State { onRendererCreated: (ChartSeriesController controller) { _chartSeriesController = controller; }, - dataSource: chartData, + dataSource: chartData!, color: const Color.fromRGBO(192, 108, 132, 1), xValueMapper: (_ChartData sales, _) => sales.country, yValueMapper: (_ChartData sales, _) => sales.sales, @@ -108,12 +106,12 @@ class _EKG_BLEState extends State { chartData.add(_ChartData(count, _getRandomInt(10, 100))); if (chartData.length == 20) { chartData.removeAt(0); - _chartSeriesController?.updateDataSource( + _chartSeriesController!.updateDataSource( addedDataIndexes: [chartData.length - 1], removedDataIndexes: [0], ); } else { - _chartSeriesController?.updateDataSource( + _chartSeriesController!.updateDataSource( addedDataIndexes: [chartData.length - 1], ); } @@ -254,11 +252,11 @@ class _EKG_BLEState extends State { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Text(ekgFileDetailResponseModel.fileName), + Text(ekgFileDetailResponseModel.fileName!), mHeight(6.0), Text("Duration: ${ekgFileDetailResponseModel.duration} seconds"), mHeight(6.0), - Text("Date: ${DateUtil.getDayMonthYearHourMinuteDateFormatted(DateTime.fromMillisecondsSinceEpoch((ekgFileDetailResponseModel.startTime * 1000)))}"), + Text("Date: ${DateUtil.getDayMonthYearHourMinuteDateFormatted(DateTime.fromMillisecondsSinceEpoch((ekgFileDetailResponseModel.startTime! * 1000)))}"), ], ), ); @@ -281,7 +279,7 @@ class _EKG_BLEState extends State { String parseEKGRealTimeDataObject(dynamic returnData) { ekgRealTimeDataResponseModel = ECGRtModel.fromJson(json.decode(returnData)); - return "HeartRate: ${ekgRealTimeDataResponseModel.param.hr} - Current State: ${ekgRealTimeDataResponseModel.param.curStatus}"; + return "HeartRate: ${ekgRealTimeDataResponseModel!.param!.hr} - Current State: ${ekgRealTimeDataResponseModel!.param!.curStatus}"; } } diff --git a/lib/pages/medical/my_trackers/viatom_devices/sp20_pulse_tracker.dart b/lib/pages/medical/my_trackers/viatom_devices/sp20_pulse_tracker.dart index c94ff8c4..fd5fd6d0 100644 --- a/lib/pages/medical/my_trackers/viatom_devices/sp20_pulse_tracker.dart +++ b/lib/pages/medical/my_trackers/viatom_devices/sp20_pulse_tracker.dart @@ -16,9 +16,15 @@ class SP20PulseTracker extends StatefulWidget { class _SP20PulseTrackerState extends State { EventChannel eventChannel = EventChannel('BLE-Platform-Bridge-Event'); - // final bpDataNotifierMeasuring = ValueNotifier(BpRtDataMeasuringModel()); - final sp20RtParamNotifier = ValueNotifier(OxyRtModel()); - final sp20StatusNotifier = ValueNotifier(""); + final sp20RtParamNotifier = ValueNotifier(OxyRtModel( + isCheckProbe: null, + isProbeOff: null, + isPulseSearching: null, + pi: null, + pr: null, + spo2: null, + )); + final ValueNotifier sp20StatusNotifier = ValueNotifier(""); final bpDeviceDataNotifier = ValueNotifier(""); String deviceName = "SP20"; @@ -61,7 +67,7 @@ class _SP20PulseTrackerState extends State { mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: [ Text( - value == null || value.isEmpty ? "" : "Connected", + value.isEmpty ? "" : "Connected", style: TextStyle(fontSize: 18), ), Text( @@ -86,7 +92,7 @@ class _SP20PulseTrackerState extends State { Row( mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: [ - if (sp20RtModel.isProbeOff) ...[ + if (sp20RtModel.isProbeOff ?? false) ...[ Text("Check Probe", style: TextStyle(fontSize: 50, fontWeight: FontWeight.bold)), ] else ...[ Column( @@ -137,7 +143,7 @@ class _SP20PulseTrackerState extends State { ValueListenableBuilder( valueListenable: sp20StatusNotifier, builder: (context, value, _) { - if (value == null || value.isEmpty) { + if (value.isEmpty) { return Row( children: [ Expanded( diff --git a/lib/pages/medical/my_trackers/weight_scale_ble.dart b/lib/pages/medical/my_trackers/weight_scale_ble.dart index 3fb8594b..fa7b45e3 100644 --- a/lib/pages/medical/my_trackers/weight_scale_ble.dart +++ b/lib/pages/medical/my_trackers/weight_scale_ble.dart @@ -20,12 +20,12 @@ class _WeightScaleBLEState extends State { String connectionStatus = "disconnected"; String currentWeight = "0.0"; - BluetoothDevice currentConnectedDevice; + BluetoothDevice? currentConnectedDevice; - StreamSubscription bleDevicesStream; - StreamSubscription weightValuesStream; + StreamSubscription? bleDevicesStream; + StreamSubscription? weightValuesStream; - WeightScaleData weightScaleData = WeightScaleData(); + WeightScaleData? weightScaleData ; final bleConnectionStatus = ValueNotifier("Disconnected"); @@ -36,9 +36,9 @@ class _WeightScaleBLEState extends State { void dispose() { super.dispose(); bleConnectionStatus.dispose(); - bleDevicesStream.cancel(); - weightValuesStream.cancel(); - currentConnectedDevice.disconnect(); + bleDevicesStream!.cancel(); + weightValuesStream!.cancel(); + currentConnectedDevice!.disconnect(); } @override @@ -84,13 +84,13 @@ class _WeightScaleBLEState extends State { ), Column( children: [ - Text("Current Weight: ${weightScaleData.weight}" + " kg"), - Text("Current BMI: ${weightScaleData.bmi}"), - Text("Current Body Fat: ${weightScaleData.fat}" + "%"), - Text("Current Bone Weight: ${weightScaleData.bone}" + " kg"), - Text("Current Water: ${weightScaleData.water}" + "%"), - Text("Current Muscle: ${weightScaleData.muscle}" + "%"), - Text("Current BMR: ${weightScaleData.bmr}" + " calories/day"), + Text("Current Weight: ${weightScaleData!.weight}" + " kg"), + Text("Current BMI: ${weightScaleData!.bmi}"), + Text("Current Body Fat: ${weightScaleData!.fat}" + "%"), + Text("Current Bone Weight: ${weightScaleData!.bone}" + " kg"), + Text("Current Water: ${weightScaleData!.water}" + "%"), + Text("Current Muscle: ${weightScaleData!.muscle}" + "%"), + Text("Current BMR: ${weightScaleData!.bmr}" + " calories/day"), ], ), // }) @@ -99,7 +99,7 @@ class _WeightScaleBLEState extends State { ); } else { FlutterBluePlus.stopScan(); - return SizedBox(height: 300.0, child: BluetoothOffScreen(adapterState: adapterState)); + return SizedBox(height: 300.0, child: BluetoothOffScreen(adapterState: adapterState!)); } }), ), @@ -122,7 +122,7 @@ class _WeightScaleBLEState extends State { blueToothDevices.forEach((element) async { if (element.device.localName.isNotEmpty) { if (element.device.localName.toLowerCase() == "sdic") { - bleDevicesStream.cancel(); + bleDevicesStream!.cancel(); element.device.connect(timeout: Duration(seconds: 5), autoConnect: false).then((value) async { bleConnectionStatus.value = "Connected..."; print("Device Connected-------"); @@ -170,7 +170,7 @@ class _WeightScaleBLEState extends State { }); await Future.delayed(Duration(milliseconds: 500)).then((value) async { print("Delayed fff1 done"); - if (!characteristic.isNotifying) await characteristic.setNotifyValue(true).catchError((err) {}); + if (!characteristic.isNotifying) await characteristic.setNotifyValue(true); }); } @@ -184,7 +184,7 @@ class _WeightScaleBLEState extends State { await Future.delayed(Duration(milliseconds: 1000)).then((value) async { print("Delayed fff2 done"); - if (!characteristic.isNotifying) await characteristic.setNotifyValue(true).catchError((err) {}); + if (!characteristic.isNotifying) await characteristic.setNotifyValue(true); }); // Write user data to fff2 @@ -202,11 +202,11 @@ class _WeightScaleBLEState extends State { }); } }); - return true; + return ; } }); }); - return true; + return ; } } }); @@ -243,13 +243,13 @@ class _WeightScaleBLEState extends State { print((int.parse(hexStringWater, radix: 16) * 0.1).toStringAsFixed(1)); setState(() { - weightScaleData.weight = (int.parse(hexStringWeight, radix: 16) * 0.1).toStringAsFixed(1); - weightScaleData.bmi = (int.parse(hexStringBMI, radix: 16) * 0.1).toStringAsFixed(1); - weightScaleData.fat = (int.parse(hexStringFat, radix: 16) * 0.1).toStringAsFixed(1); - weightScaleData.muscle = (int.parse(hexStringMuscle, radix: 16) * 0.1).toStringAsFixed(1); - weightScaleData.bmr = (int.parse(hexStringBMR, radix: 16)).toString(); - weightScaleData.bone = (int.parse(hexStringBone, radix: 16) * 0.1).toStringAsFixed(1); - weightScaleData.water = (int.parse(hexStringWater, radix: 16) * 0.1).toStringAsFixed(1); + weightScaleData!.weight = (int.parse(hexStringWeight, radix: 16) * 0.1).toStringAsFixed(1); + weightScaleData!.bmi = (int.parse(hexStringBMI, radix: 16) * 0.1).toStringAsFixed(1); + weightScaleData!.fat = (int.parse(hexStringFat, radix: 16) * 0.1).toStringAsFixed(1); + weightScaleData!.muscle = (int.parse(hexStringMuscle, radix: 16) * 0.1).toStringAsFixed(1); + weightScaleData!.bmr = (int.parse(hexStringBMR, radix: 16)).toString(); + weightScaleData!.bone = (int.parse(hexStringBone, radix: 16) * 0.1).toStringAsFixed(1); + weightScaleData!.water = (int.parse(hexStringWater, radix: 16) * 0.1).toStringAsFixed(1); }); } diff --git a/lib/services/payfort_services/payfort_service.dart b/lib/services/payfort_services/payfort_service.dart index 4cc203e2..c672c407 100644 --- a/lib/services/payfort_services/payfort_service.dart +++ b/lib/services/payfort_services/payfort_service.dart @@ -42,7 +42,7 @@ class PayfortService extends BaseService { Future addPayfortApplePayResponse(num patientID, {PayFortResult? result}) async { Map body = { "Fort_id": result!.fortId, - "CommandType": result!.command, + "CommandType": result.command, "Amount": (num.parse(result.amount!) / 100), "Payment_Option": result.paymentOption, "Customer_IP": result.customerIp, diff --git a/lib/uitl/bluetooth_off.dart b/lib/uitl/bluetooth_off.dart index f0a7f6b7..983967bc 100644 --- a/lib/uitl/bluetooth_off.dart +++ b/lib/uitl/bluetooth_off.dart @@ -4,7 +4,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_blue_plus/flutter_blue_plus.dart'; class BluetoothOffScreen extends StatelessWidget { - const BluetoothOffScreen({Key key, this.adapterState}) : super(key: key); + const BluetoothOffScreen({Key? key, required this.adapterState}) : super(key: key); final BluetoothAdapterState adapterState; diff --git a/lib/uitl/utils.dart b/lib/uitl/utils.dart index 06ba2c2b..e45cd2be 100644 --- a/lib/uitl/utils.dart +++ b/lib/uitl/utils.dart @@ -930,8 +930,8 @@ class Utils { return projectDetailListModel; } - //static String generateSignature() {} - static String generateSignature() {} +//static String generateSignature() {} +// } Widget applyShadow({Color color = Colors.grey, double shadowOpacity = 0.5, double spreadRadius = 2, double blurRadius = 7, Offset offset = const Offset(2, 2), required Widget child}) { diff --git a/lib/widgets/data_display/medical/medical_profile_item.dart b/lib/widgets/data_display/medical/medical_profile_item.dart index 6d905484..8eb8f6af 100644 --- a/lib/widgets/data_display/medical/medical_profile_item.dart +++ b/lib/widgets/data_display/medical/medical_profile_item.dart @@ -7,25 +7,17 @@ import 'package:flutter_svg/flutter_svg.dart'; class MedicalProfileItem extends StatelessWidget { final String imagePath; final String title; - final String subTitle; + final String? subTitle; final bool hasBadge = false; final bool isPngImage; final bool isInPatient; - bool isEnable; - Color? imgColor; + final bool isEnable; + final Color? imgColor; final width; final height; MedicalProfileItem( - {required this.imagePath, - required this.title, - required this.subTitle, - hasBadge, - this.isEnable = true, - this.imgColor, - this.isPngImage = false, - this.width, - this.height, this.isInPatient = false}); + {required this.imagePath, required this.title, this.subTitle, hasBadge, this.isEnable = true, this.imgColor, this.isPngImage = false, this.width, this.height, this.isInPatient = false}); @override Widget build(BuildContext context) { @@ -34,8 +26,7 @@ class MedicalProfileItem extends StatelessWidget { height: double.infinity, width: double.infinity, margin: EdgeInsets.all(0), - decoration: containerColorRadiusBorderWidth( - Colors.white, 15, CustomColors.pharmacyGreyColor, 1), + decoration: containerColorRadiusBorderWidth(Colors.white, 15, CustomColors.pharmacyGreyColor, 1), clipBehavior: Clip.antiAlias, child: Stack( children: [ @@ -56,22 +47,14 @@ class MedicalProfileItem extends StatelessWidget { isPngImage ? Image.asset( imagePath, - width: width != null - ? width - : SizeConfig.widthMultiplier! * 7, - height: height != null - ? height - : SizeConfig.widthMultiplier! * 7, + width: width != null ? width : SizeConfig.widthMultiplier! * 7, + height: height != null ? height : SizeConfig.widthMultiplier! * 7, color: imgColor, ) : SvgPicture.asset( isInPatient ? "assets/images/new/inpatient/$imagePath" : "assets/images/new/services/$imagePath", - height: height != null - ? height - : SizeConfig.widthMultiplier! * 7, - width: width != null - ? width - : SizeConfig.widthMultiplier! * 7, + height: height != null ? height : SizeConfig.widthMultiplier! * 7, + width: width != null ? width : SizeConfig.widthMultiplier! * 7, color: imgColor, ), mFlex(2), @@ -92,7 +75,7 @@ class MedicalProfileItem extends StatelessWidget { children: [ Expanded( child: Text( - subTitle, + subTitle!, maxLines: 1, style: TextStyle( fontSize: SizeConfig.textMultiplier! * 1.4, diff --git a/pubspec.yaml b/pubspec.yaml index 2713357b..0e913c3c 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -100,7 +100,7 @@ dependencies: syncfusion_flutter_calendar: ^23.1.42 #Charts for Live ECG View - syncfusion_flutter_charts: ^19.3.55 + syncfusion_flutter_charts: ^23.2.7 # SVG Images flutter_svg: ^2.0.8