Browse Source

add page prop enableLoopPlayback

Melon 2 years ago
parent
commit
fef8a99724

+ 10 - 3
lib/process/workspace/measure_controller.dart

@@ -32,12 +32,17 @@ class MeasureController implements IMeasureController {
   IApplication? _application;
   int _recursive = 0;
 
+  final bool enableLoopPlayback;
+
   late final MeasureImagesFetchFunc _imagesFetchFunc;
   final measureData = Get.find<MeasureDataController>();
   final measure3DViewController = Get.find<Measure3DViewController>();
 
-  MeasureController(String code,
-      {required MeasureImagesFetchFunc imagesFetchFunc}) {
+  MeasureController(
+    String code, {
+    required MeasureImagesFetchFunc imagesFetchFunc,
+    this.enableLoopPlayback = false,
+  }) {
     _examInfo = ExamInfo(code);
     _imagesFetchFunc = imagesFetchFunc;
   }
@@ -109,7 +114,9 @@ class MeasureController implements IMeasureController {
     _playerController?.dispose();
     Get.delete<IPlayerController>();
     _windowSetState(index);
-    _playerController = Get.put<IPlayerController>(VidPlayerController(url));
+    _playerController = Get.put<IPlayerController>(
+      VidPlayerController(url)..enableLoop = enableLoopPlayback,
+    );
     playerController.firstFrameLoaded.addListener(_onFirstFrameLoaded);
     playerController.frameUpdated.addListener(_onFrameUpdated);
     playerController.eventHandler.addListener(_onPlayerEnvent);

+ 10 - 3
lib/view/measure/measure_view.dart

@@ -25,15 +25,21 @@ import 'package:get/get.dart';
 class MeasureMainPage extends StatefulWidget
     implements FWidget, FInteractiveContainer {
   const MeasureMainPage(
-      this.token, this.recordCode, this.patientCode, this.remedicalCode,
-      {this.needRouterBack, Key? key})
-      : super(key: key);
+    this.token,
+    this.recordCode,
+    this.patientCode,
+    this.remedicalCode, {
+    this.needRouterBack,
+    this.enableLoopPlayback = false,
+    Key? key,
+  }) : super(key: key);
 
   final String token;
   final String patientCode;
   final String remedicalCode;
   final String recordCode;
   final bool? needRouterBack; // 需要返回按钮【一版用于返回到报告编辑】
+  final bool enableLoopPlayback;
   @override
   final String pageName = 'MeasureMainPage';
   @override
@@ -343,6 +349,7 @@ class _MeasureMainPageState extends State<MeasureMainPage> {
       imagesFetchFunc: (code) async {
         return examImageInfoList;
       },
+      enableLoopPlayback: widget.enableLoopPlayback,
     ));
 
     await measureController.load();

+ 12 - 0
lib/view/measure/switch_loop_button.dart

@@ -1,5 +1,6 @@
 import 'package:fis_i18n/i18n.dart';
 import 'package:fis_measure/interfaces/process/player/play_controller.dart';
+import 'package:fis_measure/interfaces/process/workspace/exam_info.dart';
 import 'package:fis_measure/process/workspace/measure_controller.dart';
 import 'package:fis_measure/view/player/controller.dart';
 import 'package:fis_ui/base_define/page.dart';
@@ -34,9 +35,20 @@ class _SwitchRepeatButtonState extends State<SwitchPlayLoopButton>
         _bindPlayerRepeat();
       }
     });
+    measureController.imageLoaded.addListener(_onImageLoaded);
     super.initState();
   }
 
+  @override
+  void dispose() {
+    measureController.imageLoaded.removeListener(_onImageLoaded);
+    super.dispose();
+  }
+
+  void _onImageLoaded(Object _, ExamImageInfo? e) {
+    _bindPlayerRepeat();
+  }
+
   @override
   Widget build(BuildContext context) {
     return FSizedBox(