|
@@ -13,7 +13,6 @@ import 'package:vitalapp/components/alert_dialog.dart';
|
|
|
import 'package:vitalapp/managers/interfaces/models/device.dart';
|
|
|
import 'package:vitalapp/pages/check/widgets/exam_configurable/exam_card.dart';
|
|
|
import 'package:vitalapp/pages/medical/controller.dart';
|
|
|
-import 'package:vitalapp/pages/medical/controllers/nibp.dart';
|
|
|
import 'package:vitalapp/pages/medical/models/item.dart';
|
|
|
import 'package:vitalapp/pages/medical/models/worker.dart';
|
|
|
import 'package:vitalapp/pages/medical/widgets/device_status.dart';
|
|
@@ -182,10 +181,10 @@ class BloodPressure extends StatefulWidget {
|
|
|
|
|
|
|
|
|
@override
|
|
|
- State<BloodPressure> createState() => _ExamBloodPressureState();
|
|
|
+ State<BloodPressure> createState() => _BloodPressureState();
|
|
|
}
|
|
|
|
|
|
-class _ExamBloodPressureState extends State<BloodPressure> {
|
|
|
+class _BloodPressureState extends State<BloodPressure> {
|
|
|
var controller = Get.find<MedicalController>();
|
|
|
PressureStatus pressureStatus = PressureStatus.left;
|
|
|
PressureDeviceStatus pressureDeviceStatus = PressureDeviceStatus.start;
|
|
@@ -222,6 +221,7 @@ class _ExamBloodPressureState extends State<BloodPressure> {
|
|
|
_connectStatus = nibp.connectStatus;
|
|
|
|
|
|
loadListeners();
|
|
|
+ connect();
|
|
|
}
|
|
|
|
|
|
void loadListeners() {
|
|
@@ -230,28 +230,50 @@ class _ExamBloodPressureState extends State<BloodPressure> {
|
|
|
worker!.connectErrorEvent.addListener(_onConnectFail);
|
|
|
worker!.connectedEvent.addListener(_onConnectSuccess);
|
|
|
worker!.disconnectedEvent.addListener(_onDisconnected);
|
|
|
- worker!.connect();
|
|
|
+ }
|
|
|
+
|
|
|
+ void releaseListeners() {
|
|
|
+ if (worker != null) {
|
|
|
+ worker!.connectErrorEvent.removeListener(_onConnectFail);
|
|
|
+ worker!.connectedEvent.removeListener(_onConnectSuccess);
|
|
|
+ worker!.liveUpdateEvent.removeListener(_onLiveUpdate);
|
|
|
+ worker!.resultUpdateEvent.removeListener(_onSuccess);
|
|
|
+ worker!.disconnectedEvent.removeListener(_onDisconnected);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ Future<void> connect() async {
|
|
|
+ try {
|
|
|
+ if (worker != null) {
|
|
|
+ await worker!.connect();
|
|
|
+ }
|
|
|
+ } catch (err) {
|
|
|
+ print(err);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
Future<void> disconnect() async {
|
|
|
try {
|
|
|
if (worker != null) {
|
|
|
await worker!.disconnect();
|
|
|
-
|
|
|
- worker!.connectErrorEvent.removeListener(_onConnectFail);
|
|
|
- worker!.connectedEvent.removeListener(_onConnectSuccess);
|
|
|
- worker!.liveUpdateEvent.removeListener(_onLiveUpdate);
|
|
|
- worker!.resultUpdateEvent.removeListener(_onSuccess);
|
|
|
- worker!.disconnectedEvent.removeListener(_onDisconnected);
|
|
|
}
|
|
|
} catch (err) {
|
|
|
print(err);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ Future<void> tryReconnect() async {
|
|
|
+ if (worker != null) {
|
|
|
+ await disconnect();
|
|
|
+ await connect();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
@override
|
|
|
void dispose() {
|
|
|
nibp.dispose();
|
|
|
+ releaseListeners();
|
|
|
disconnect();
|
|
|
worker?.dispose();
|
|
|
super.dispose();
|
|
@@ -288,8 +310,7 @@ class _ExamBloodPressureState extends State<BloodPressure> {
|
|
|
print('连接设备失败:${worker!.mac},$errorCount,${DateTime.now()}');
|
|
|
logger.i('连接设备失败:${worker!.mac},$errorCount,${DateTime.now()}');
|
|
|
errorCount++;
|
|
|
- disconnect();
|
|
|
- loadListeners();
|
|
|
+ tryReconnect();
|
|
|
} else {
|
|
|
print('连接设备失败:${worker!.mac},$errorCount,${DateTime.now()}');
|
|
|
logger.i('连接设备失败:${worker!.mac},$errorCount,${DateTime.now()}');
|
|
@@ -302,14 +323,8 @@ class _ExamBloodPressureState extends State<BloodPressure> {
|
|
|
void _onDisconnected(sender, e) {
|
|
|
logger.i("设备连接中断:${worker!.mac}");
|
|
|
print('设备连接中断:${worker!.mac}');
|
|
|
- if (errorCount < 3) {
|
|
|
- print('设备连接中断:${worker!.mac},$errorCount');
|
|
|
- errorCount++;
|
|
|
- disconnect();
|
|
|
- loadListeners();
|
|
|
- } else {
|
|
|
- isConnectFail = true;
|
|
|
- }
|
|
|
+ tryReconnect();
|
|
|
+ errorCount = 0;
|
|
|
_connectStatus = WorkerStatus.disconnected;
|
|
|
setState(() {});
|
|
|
}
|
|
@@ -426,7 +441,7 @@ class _ExamBloodPressureState extends State<BloodPressure> {
|
|
|
onPressed: () {
|
|
|
controller.diagnosisDataValue['NIBP'] = null;
|
|
|
liveValue = 0;
|
|
|
- worker?.connect();
|
|
|
+ tryReconnect();
|
|
|
setState(() {
|
|
|
_connectStatus = WorkerStatus.connecting;
|
|
|
isConnectFail = false;
|