|
@@ -10,9 +10,12 @@ import 'package:fis_measure/interfaces/process/workspace/exam_info.dart';
|
|
|
import 'package:fis_measure/process/workspace/measure_controller.dart';
|
|
|
import 'package:fis_measure/process/workspace/measure_data_controller.dart';
|
|
|
import 'package:fis_measure/process/workspace/measure_handler.dart';
|
|
|
+import 'package:fis_measure/process/workspace/third_part/application.dart';
|
|
|
import 'package:fis_measure/view/measure/measure_view_controller.dart';
|
|
|
import 'package:fis_measure/view/menu_button_group/menu_button_group.dart';
|
|
|
import 'package:fis_measure/view/player/controller.dart';
|
|
|
+import 'package:fis_measure/view/player/enums.dart';
|
|
|
+import 'package:fis_measure/view/player/events.dart';
|
|
|
import 'package:fis_ui/base_define/page.dart';
|
|
|
import 'package:fis_ui/index.dart';
|
|
|
import 'package:flutter/material.dart';
|
|
@@ -42,20 +45,27 @@ class OperateTypeChangeButtonState extends State<OperateTypeChangeButton>
|
|
|
// late TabController tabController;
|
|
|
late final measureData = Get.find<MeasureDataController>();
|
|
|
bool isShowMeasureButton = true;
|
|
|
- bool is3rdVideoTappedMeasure = false; // 三方视频是否进入(or请求)过测量
|
|
|
bool isWaitingDrawStandardLine = false;
|
|
|
- OperateButtonState operateButtonState = OperateButtonState.isMeasure;
|
|
|
+ OperateButtonState operateButtonState = OperateButtonState.allClose;
|
|
|
|
|
|
/// 全部图片list
|
|
|
final measureController = Get.find<MeasureController>();
|
|
|
VidPlayerController playerController =
|
|
|
Get.find<IPlayerController>() as VidPlayerController;
|
|
|
|
|
|
+ bool get isCurrMeasure => operateButtonState == OperateButtonState.isMeasure;
|
|
|
+ bool get isCurrAnnotation =>
|
|
|
+ operateButtonState == OperateButtonState.isAnnotation;
|
|
|
+
|
|
|
@override
|
|
|
void initState() {
|
|
|
super.initState();
|
|
|
measureHandler.annotationsLoaded.addListener(onAnnotationsLoaded);
|
|
|
measureController.imageLoaded.addListener(_onImageLoaded);
|
|
|
+ playerController.eventHandler.addListener(_onHandlePlayerEnvent);
|
|
|
+ WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
|
|
|
+ handleAutoTapInMeasure();
|
|
|
+ });
|
|
|
}
|
|
|
|
|
|
@override
|
|
@@ -63,6 +73,7 @@ class OperateTypeChangeButtonState extends State<OperateTypeChangeButton>
|
|
|
super.dispose();
|
|
|
measureHandler.annotationsLoaded.removeListener(onAnnotationsLoaded);
|
|
|
measureController.imageLoaded.removeListener(_onImageLoaded);
|
|
|
+ playerController.eventHandler.removeListener(_onHandlePlayerEnvent);
|
|
|
// tabController.dispose();
|
|
|
}
|
|
|
|
|
@@ -112,7 +123,7 @@ class OperateTypeChangeButtonState extends State<OperateTypeChangeButton>
|
|
|
measureHandler.onRightClickFinishMeasure.emit(this, true);
|
|
|
final application = Get.find<IApplication>();
|
|
|
Future.delayed(const Duration(milliseconds: 500), () {
|
|
|
- application.switchAnnotation(AnnotationType.label, "test");
|
|
|
+ application.switchAnnotation(AnnotationType.label, "empty");
|
|
|
});
|
|
|
}
|
|
|
}
|
|
@@ -143,10 +154,13 @@ class OperateTypeChangeButtonState extends State<OperateTypeChangeButton>
|
|
|
final application = Get.find<IApplication>();
|
|
|
bool canEnterMeasure = true;
|
|
|
if (application.checkIs3rdAndEmptyStandardLine() &&
|
|
|
- application.isSingleFrame == false &&
|
|
|
- is3rdVideoTappedMeasure == true) {
|
|
|
- // 校准信息为空,但不是首次进入,不再自动进入测量
|
|
|
- canEnterMeasure = false;
|
|
|
+ application.isSingleFrame == false) {
|
|
|
+ // 校准信息为空
|
|
|
+ final thirdPartApp = (application as ThirdPartApplication);
|
|
|
+ if (thirdPartApp.hasFillEmtpyStandardLineRequested) {
|
|
|
+ // 不是首次请求,不再自动进入测量
|
|
|
+ canEnterMeasure = false;
|
|
|
+ }
|
|
|
}
|
|
|
if (canEnterMeasure) {
|
|
|
enterMeasure();
|
|
@@ -157,6 +171,8 @@ class OperateTypeChangeButtonState extends State<OperateTypeChangeButton>
|
|
|
void handleAutoExitMeasure() {
|
|
|
if (Get.find<IApplication>().checkIs3rdAndEmptyStandardLine()) {
|
|
|
closeAll();
|
|
|
+ } else {
|
|
|
+ enterMeasure();
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -193,14 +209,18 @@ class OperateTypeChangeButtonState extends State<OperateTypeChangeButton>
|
|
|
|
|
|
/// 进入测量
|
|
|
void enterMeasure() {
|
|
|
- if (Get.find<IApplication>().checkIs3rdAndEmptyStandardLine()) {
|
|
|
- is3rdVideoTappedMeasure = true;
|
|
|
+ final application = Get.find<IApplication>();
|
|
|
+ if (application.checkIs3rdAndEmptyStandardLine()) {
|
|
|
VoidCallback rollbackFn;
|
|
|
if (operateButtonState == OperateButtonState.isAnnotation) {
|
|
|
rollbackFn = onTapAnnotation;
|
|
|
} else {
|
|
|
rollbackFn = closeAll;
|
|
|
}
|
|
|
+
|
|
|
+ final thirdPartApp = (application as ThirdPartApplication);
|
|
|
+ thirdPartApp.hasFillEmtpyStandardLineRequested = true;
|
|
|
+
|
|
|
_tryEnterMeasure(rollbackFn);
|
|
|
} else {
|
|
|
_tryEnterMeasure(() {});
|
|
@@ -320,9 +340,13 @@ class OperateTypeChangeButtonState extends State<OperateTypeChangeButton>
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- bool get isCurrMeasure => operateButtonState == OperateButtonState.isMeasure;
|
|
|
- bool get isCurrAnnotation =>
|
|
|
- operateButtonState == OperateButtonState.isAnnotation;
|
|
|
+ void _onHandlePlayerEnvent(Object sender, VidPlayerEvent e) {
|
|
|
+ if (e is VidPlayerStatusChangeEvent) {
|
|
|
+ if (e.status == VidPlayStatus.play) {
|
|
|
+ handleAutoExitMeasure();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
@override
|
|
|
FWidget build(BuildContext context) {
|