Browse Source

代码优化

gjh 1 week ago
parent
commit
c9979bec1a

+ 30 - 18
lib/pages/view/widget/video_operation_view.dart

@@ -45,8 +45,8 @@ class _VideoOperationViewState extends State<VideoOperationView> {
45
   void initState() {
45
   void initState() {
46
     super.initState();
46
     super.initState();
47
     widget.controller._setCountController(_countController);
47
     widget.controller._setCountController(_countController);
48
-    widget.controller._recordingState.addListener(_onUpdateRecordingState);
49
-    widget.controller._isCountingDown.addListener(_onUpdateIsCountingDown);
48
+    widget.controller.recordingState.addListener(_onUpdateRecordingState);
49
+    widget.controller.isCountingDown.addListener(_onUpdateIsCountingDown);
50
   }
50
   }
51
 
51
 
52
   ///更新录像状态
52
   ///更新录像状态
@@ -71,7 +71,7 @@ class _VideoOperationViewState extends State<VideoOperationView> {
71
   ///更新倒计时状态
71
   ///更新倒计时状态
72
   void _onUpdateIsCountingDown() {
72
   void _onUpdateIsCountingDown() {
73
     setState(() {
73
     setState(() {
74
-      _isCountingDown = widget.controller._isCountingDown.value;
74
+      _isCountingDown = widget.controller.isCounting;
75
     });
75
     });
76
   }
76
   }
77
 
77
 
@@ -79,8 +79,9 @@ class _VideoOperationViewState extends State<VideoOperationView> {
79
   void dispose() {
79
   void dispose() {
80
     super.dispose();
80
     super.dispose();
81
     _recordingTimer?.cancel();
81
     _recordingTimer?.cancel();
82
-    widget.controller._recordingState.removeListener(_onUpdateRecordingState);
83
-    widget.controller._isCountingDown.removeListener(_onUpdateIsCountingDown);
82
+    _countController.dispose();
83
+    widget.controller.recordingState.removeListener(_onUpdateRecordingState);
84
+    widget.controller.isCountingDown.removeListener(_onUpdateIsCountingDown);
84
   }
85
   }
85
 
86
 
86
   @override
87
   @override
@@ -180,9 +181,8 @@ class _VideoOperationViewState extends State<VideoOperationView> {
180
             width: 17.5.r,
181
             width: 17.5.r,
181
             height: 17.5.r,
182
             height: 17.5.r,
182
             decoration: BoxDecoration(
183
             decoration: BoxDecoration(
183
-                color: widget.controller._recordingState.value
184
-                    ? Colors.red
185
-                    : Colors.white,
184
+                color:
185
+                    widget.controller.isRecording ? Colors.red : Colors.white,
186
                 shape: BoxShape.circle),
186
                 shape: BoxShape.circle),
187
           ));
187
           ));
188
 
188
 
@@ -229,7 +229,7 @@ class _VideoOperationViewState extends State<VideoOperationView> {
229
     int delay = await SpUtil.getDelayShotTime();
229
     int delay = await SpUtil.getDelayShotTime();
230
     _countController.startCount(isDelay ? delay : 0);
230
     _countController.startCount(isDelay ? delay : 0);
231
     if (isDelay) {
231
     if (isDelay) {
232
-      widget.controller._isCountingDown.value = true;
232
+      widget.controller.isCounting = true;
233
     }
233
     }
234
   }
234
   }
235
 
235
 
@@ -250,7 +250,7 @@ class _VideoOperationViewState extends State<VideoOperationView> {
250
   ///关闭视频
250
   ///关闭视频
251
   void _stopVideo() {
251
   void _stopVideo() {
252
     widget.onStopVideo();
252
     widget.onStopVideo();
253
-    widget.controller._isCountingDown.value = false;
253
+    widget.controller.isCounting = false;
254
   }
254
   }
255
 
255
 
256
   ///拍照倒计时
256
   ///拍照倒计时
@@ -259,16 +259,22 @@ class _VideoOperationViewState extends State<VideoOperationView> {
259
       return;
259
       return;
260
     }
260
     }
261
     widget.onTakePhoto();
261
     widget.onTakePhoto();
262
-    widget.controller._isCountingDown.value = false;
262
+    widget.controller.isCounting = false;
263
   }
263
   }
264
 }
264
 }
265
 
265
 
266
 class VideoOperationViewController {
266
 class VideoOperationViewController {
267
   CountDownTextController? _countController;
267
   CountDownTextController? _countController;
268
 
268
 
269
-  final ValueNotifier<bool> _recordingState = ValueNotifier(false);
269
+  ValueNotifier<bool>? _recordingState;
270
 
270
 
271
-  final ValueNotifier<bool> _isCountingDown = ValueNotifier(false);
271
+  ValueNotifier<bool> get recordingState =>
272
+      _recordingState ??= ValueNotifier(false);
273
+
274
+  ValueNotifier<bool>? _isCountingDown;
275
+
276
+  ValueNotifier<bool> get isCountingDown =>
277
+      _isCountingDown ??= ValueNotifier(false);
272
 
278
 
273
   void _setCountController(CountDownTextController controller) {
279
   void _setCountController(CountDownTextController controller) {
274
     _countController = controller;
280
     _countController = controller;
@@ -276,16 +282,22 @@ class VideoOperationViewController {
276
 
282
 
277
   void dispose() {
283
   void dispose() {
278
     _countController?.stopCount();
284
     _countController?.stopCount();
279
-    _recordingState.dispose();
280
-    _isCountingDown.dispose();
285
+    _recordingState?.dispose();
286
+    _recordingState = null;
287
+    _isCountingDown?.dispose();
288
+    _isCountingDown = null;
281
   }
289
   }
282
 
290
 
283
   void updateRecordingState(bool isRecording) {
291
   void updateRecordingState(bool isRecording) {
284
-    if (_recordingState.value == isRecording) {
292
+    if (recordingState.value == isRecording) {
285
       return;
293
       return;
286
     }
294
     }
287
-    _recordingState.value = isRecording;
295
+    recordingState.value = isRecording;
288
   }
296
   }
289
 
297
 
290
-  bool get isRecording => _recordingState.value;
298
+  bool get isRecording => recordingState.value;
299
+
300
+  bool get isCounting => isCountingDown.value;
301
+
302
+  set isCounting(bool bo) => isCountingDown.value = bo;
291
 }
303
 }

+ 8 - 1
lib/widget/count_down_text.dart

@@ -41,7 +41,9 @@ class _CountDownTextState extends State<CountDownText> {
41
 }
41
 }
42
 
42
 
43
 class CountDownTextController {
43
 class CountDownTextController {
44
-  ValueNotifier<String> countText = ValueNotifier("");
44
+  ValueNotifier<String>? _countText;
45
+
46
+  ValueNotifier<String> get countText => _countText ??= ValueNotifier("");
45
 
47
 
46
   void Function(int tick, bool complete)? onCount;
48
   void Function(int tick, bool complete)? onCount;
47
 
49
 
@@ -81,4 +83,9 @@ class CountDownTextController {
81
   void _timeUp() {
83
   void _timeUp() {
82
     stopCount();
84
     stopCount();
83
   }
85
   }
86
+
87
+  void dispose() {
88
+    _countText?.dispose();
89
+    _countText = null;
90
+  }
84
 }
91
 }

+ 12 - 3
lib/widget/webview_progress_bar.dart

@@ -1,3 +1,4 @@
1
+import 'package:eitc_erm_dental_flutter/funcs.dart';
1
 import 'package:flutter/material.dart';
2
 import 'package:flutter/material.dart';
2
 
3
 
3
 ///Webview进度条
4
 ///Webview进度条
@@ -30,9 +31,17 @@ class _WebviewProgressBarState extends State<WebviewProgressBar> {
30
   @override
31
   @override
31
   void initState() {
32
   void initState() {
32
     super.initState();
33
     super.initState();
33
-    widget.controller.progress.addListener(() {
34
-      setState(() {});
35
-    });
34
+    widget.controller.progress.addListener(_onUpdateProgress);
35
+  }
36
+
37
+  void _onUpdateProgress() {
38
+    setState(() {});
39
+  }
40
+
41
+  @override
42
+  void dispose() {
43
+    super.dispose();
44
+    widget.controller.progress.removeListener(_onUpdateProgress);
36
   }
45
   }
37
 
46
 
38
   @override
47
   @override