Browse Source

Merge branch 'master' of http://git.ius.plus/melon.yin/fis_lib_measure

melon.yin 2 years ago
parent
commit
944b7c4700

+ 1 - 1
lib/process/workspace/measure_handler.dart

@@ -5,7 +5,7 @@ import 'package:fis_jsonrpc/rpc.dart';
 import 'package:fis_measure/interfaces/enums/annotation.dart';
 import 'package:fis_measure/interfaces/enums/operate.dart';
 import 'package:fis_measure/view/measure/operate_type_change_button.dart';
-import 'package:fis_measure/view/measure/tool_chest_title.dart';
+import 'package:fis_measure/view/measure/measure_panel_head.dart';
 
 class ChangeImageInfo {
   /// 图片地址

+ 13 - 6
lib/process/workspace/recorder.dart

@@ -3,6 +3,7 @@ import 'package:fis_measure/interfaces/enums/operate.dart';
 import 'package:fis_measure/interfaces/process/items/item.dart';
 import 'package:fis_measure/interfaces/process/workspace/application.dart';
 import 'package:fis_measure/interfaces/process/workspace/recorder.dart';
+import 'package:get/get.dart';
 
 class MeasureRecorder implements IMeasureRecorder {
   int _lastId = 0;
@@ -39,14 +40,18 @@ class MeasureRecorder implements IMeasureRecorder {
 
   /// 撤销一次操作
   bool undoOnce() {
-    if (_lastId == 0) return false;
+    if (_records.isEmpty) {
+      return false;
+    }
     _finishLast();
     _cleanMeasureList();
-
     final result = _undoOnce();
     _checkReactive();
-    _decreaseId();
-    return result;
+    if (result == null) return false;
+    if (result.recordType == MeasureRecordType.measure) {
+      _decreaseId();
+    }
+    return true;
   }
 
   /// 清除所有记录
@@ -64,7 +69,7 @@ class MeasureRecorder implements IMeasureRecorder {
     _resetId();
   }
 
-  bool _undoOnce() {
+  _RecordModelBase? _undoOnce() {
     final record = _records.last;
     bool removed = false;
     if (record.recordType == MeasureRecordType.measure) {
@@ -75,8 +80,10 @@ class MeasureRecorder implements IMeasureRecorder {
     if (removed) {
       _records.removeLast();
       _checkResetId();
+      return record;
+    } else {
+      return null;
     }
-    return removed;
   }
 
   void _finishLast() {

+ 1 - 1
lib/view/measure/arrow_annotation_button.dart

@@ -4,7 +4,7 @@ import 'package:fis_measure/interfaces/enums/operate.dart';
 import 'package:fis_measure/interfaces/process/workspace/application.dart';
 import 'package:fis_measure/process/workspace/measure_handler.dart';
 import 'package:fis_measure/view/measure/operate_type_change_button.dart';
-import 'package:fis_measure/view/measure/tool_chest_title.dart';
+import 'package:fis_measure/view/measure/measure_panel_head.dart';
 import 'package:fis_ui/index.dart';
 import 'package:flutter/material.dart';
 import 'package:get/get.dart';

+ 99 - 48
lib/view/measure/measure_config/measure_configuation_page.dart

@@ -6,14 +6,19 @@ import 'package:fis_measure/interfaces/process/workspace/application.dart';
 import 'package:fis_measure/process/language/measure_language.dart';
 import 'package:fis_measure/process/workspace/measure_data_controller.dart';
 import 'package:fis_measure/process/workspace/measure_handler.dart';
+import 'package:fis_measure/view/measure/measure_config/widgets/measure_configuration_style.dart';
 import 'package:fis_measure/view/measure/measure_config/widgets/measurement_tool_selection.dart';
 import 'package:fis_measure/view/measure/measure_view_controller.dart';
 import 'package:fis_measure/view/player/controller.dart';
 import 'package:fis_theme/theme.dart';
 import 'package:fis_ui/index.dart';
+import 'package:fis_ui/interface/interactive_container.dart';
+import 'package:fis_ui/widgets/layout/offstage.dart';
 import 'package:flutter/material.dart';
 import 'package:get/get.dart';
 
+import '../../gesture/positioned_cursor.dart';
+
 ///条目元数据组
 class ItemMetaGroup {
   ItemMetaGroup(
@@ -33,28 +38,22 @@ class ItemMetaGroup {
 }
 
 /// 测量工具配置
-class MeasureConfigurationPage extends StatelessWidget {
-  const MeasureConfigurationPage({Key? key}) : super(key: key);
-
+class MeasureConfigurationPage extends StatefulWidget
+    implements FWidget, FInteractiveContainer {
   @override
-  FWidget build(BuildContext context) {
-    return const _MeasureConfigurationDialog();
-  }
-}
-
-///测量配置对话框
-class _MeasureConfigurationDialog extends StatefulWidget implements FWidget {
-  const _MeasureConfigurationDialog({
+  final String pageName = 'MeasureConfigurationDialog';
+  const MeasureConfigurationPage({
     Key? key,
+    required this.ifHideConfig,
   }) : super(key: key);
 
+  final bool ifHideConfig;
   @override
-  State<_MeasureConfigurationDialog> createState() =>
-      _MeasureConfigurationDialogState();
+  State<MeasureConfigurationPage> createState() =>
+      MeasureConfigurationPageState();
 }
 
-class _MeasureConfigurationDialogState
-    extends State<_MeasureConfigurationDialog> {
+class MeasureConfigurationPageState extends State<MeasureConfigurationPage> {
   int measureToolsTab = 0;
 
   /// 切换标签栏
@@ -69,6 +68,7 @@ class _MeasureConfigurationDialogState
 
   /// 数据
   final measureData = Get.find<MeasureDataController>();
+  final mouseState = Get.find<IMouseState>();
 
   /// 测量项控制器
   final measureMetaController = Get.find<MeasureMetaController>();
@@ -136,6 +136,19 @@ class _MeasureConfigurationDialogState
         .call(measureModeSubmitChanged);
     getName();
     measureMetaController.setAvailableModes(measureData.currentMode);
+    saveMeasureSystemSettingAsync();
+  }
+
+  // 保存修改结果
+  Future<void> saveMeasureSystemSettingAsync() async {
+    measureData.measureSystemSettingChanged
+        .emit(this, measureData.measureSystemSetting);
+    await measureData
+        .saveMeasureSystemSettingAsync(measureData.measureSystemSetting);
+    mouseState.cursorType = getMeasureSystemSettingCursorType(
+        measureData.measureSystemSetting.cursorType);
+    mouseState.cursorSize =
+        measureData.measureSystemSetting.cursorSize as double;
   }
 
   @override
@@ -208,34 +221,59 @@ class _MeasureConfigurationDialogState
                 const FSizedBox(
                   height: 10,
                 ),
-                FContainer(
-                  width: 160,
-                  child: FInkWell(
-                    onTap: () {
-                      changeTab(0);
-                    },
-                    child: FContainer(
-                      padding: const EdgeInsets.symmetric(
-                        vertical: 10,
-                        horizontal: 5,
+                if (!widget.ifHideConfig)
+                  FContainer(
+                    width: 160,
+                    child: FInkWell(
+                      onTap: () {
+                        changeTab(0);
+                      },
+                      child: FContainer(
+                        padding: const EdgeInsets.symmetric(
+                          vertical: 10,
+                          horizontal: 5,
+                        ),
+                        child: FText(
+                          i18nBook.measure.measureToolSelect.t,
+                          style: measureToolsTab == 0
+                              ? TextStyle(
+                                  color: FTheme.ins.colorScheme.primary,
+                                )
+                              : const TextStyle(),
+                          textAlign: TextAlign.end,
+                        ),
                       ),
-                      child: FText(
-                        i18nBook.measure.measureToolSelect.t,
-                        style: measureToolsTab == 0
-                            ? TextStyle(
-                                color: FTheme.ins.colorScheme.primary,
-                              )
-                            : const TextStyle(),
-                        textAlign: TextAlign.end,
+                    ),
+                  ),
+                if (!widget.ifHideConfig)
+                  FContainer(
+                    width: 160,
+                    child: FInkWell(
+                      onTap: () {
+                        changeTab(1);
+                      },
+                      child: FContainer(
+                        padding: const EdgeInsets.symmetric(
+                          vertical: 10,
+                          horizontal: 5,
+                        ),
+                        child: FText(
+                          i18nBook.measure.selectedMeasureTool.t,
+                          style: measureToolsTab == 1
+                              ? TextStyle(
+                                  color: FTheme.ins.colorScheme.primary,
+                                )
+                              : const TextStyle(),
+                          textAlign: TextAlign.end,
+                        ),
                       ),
                     ),
                   ),
-                ),
                 FContainer(
                   width: 160,
                   child: FInkWell(
                     onTap: () {
-                      changeTab(1);
+                      changeTab(2);
                     },
                     child: FContainer(
                       padding: const EdgeInsets.symmetric(
@@ -243,8 +281,8 @@ class _MeasureConfigurationDialogState
                         horizontal: 5,
                       ),
                       child: FText(
-                        i18nBook.measure.selectedMeasureTool.t,
-                        style: measureToolsTab == 1
+                        i18nBook.measure.measureStyleConfig.t,
+                        style: measureToolsTab == 2
                             ? TextStyle(
                                 color: FTheme.ins.colorScheme.primary,
                               )
@@ -257,20 +295,33 @@ class _MeasureConfigurationDialogState
               ],
             ),
           ),
-          measureToolsTab == 0
-              ? FExpanded(
-                  child: FSingleChildScrollView(
-                    child: SelectModulePage(
-                      itemMetaListGroup: itemMetaListGroup,
-                      chooseMeasureList: chooseMeasureList,
-                    ),
-                  ),
-                )
-              : FExpanded(
-                  child: _HasSelectedModulePage(
+          FExpanded(
+              child: FStack(
+            fit: StackFit.passthrough,
+            children: [
+              FOffstage(
+                offstage: measureToolsTab != 0,
+                child: FSingleChildScrollView(
+                  child: SelectModulePage(
+                    itemMetaListGroup: itemMetaListGroup,
                     chooseMeasureList: chooseMeasureList,
                   ),
                 ),
+              ),
+              FOffstage(
+                offstage: measureToolsTab != 1,
+                child: _HasSelectedModulePage(
+                  chooseMeasureList: chooseMeasureList,
+                ),
+              ),
+              FOffstage(
+                offstage: measureToolsTab != 2,
+                child: StyleConfigPage(
+                  businessParent: widget,
+                ),
+              ),
+            ],
+          )),
         ],
       ),
     );

+ 16 - 37
lib/view/measure/measure_config/widgets/measure_configuration_style.dart

@@ -40,8 +40,8 @@ MeasureCursorType getMeasureSystemSettingCursorType(
   }
 }
 
-class PatternDialog extends StatelessWidget {
-  PatternDialog({
+class StyleConfigPage extends FStatelessWidget {
+  StyleConfigPage({
     Key? key,
     required this.businessParent,
   }) : super(key: key);
@@ -57,45 +57,24 @@ class PatternDialog extends StatelessWidget {
 
   @override
   FWidget build(BuildContext context) {
-    return FSimpleDialog(
-      title: FText(
-        i18nBook.measure.style.t,
-        style: const TextStyle(
-          color: Colors.white,
-          fontSize: 18,
+    return FContainer(
+        width: 550,
+        height: 500,
+        padding: const EdgeInsets.symmetric(
+          vertical: 15,
+          horizontal: 15,
         ),
-      ),
-      isDefault: true,
-      cancelString: i18nBook.common.cancel.t,
-      okString: i18nBook.common.confirm.t,
-      onOk: () {
-        _saveMeasureSystemSettingAsync();
-        Get.back();
-      },
-      onCancel: () {
-        Get.back();
-      },
-      children: [
-        FContainer(
-            width: 550,
-            height: 500,
-            padding: const EdgeInsets.symmetric(
-              vertical: 15,
-              horizontal: 15,
-            ),
-            margin: const EdgeInsets.symmetric(
-              horizontal: 15,
-            ),
-            child: PatternBody(
-              businessParent: businessParent,
-              measureSystemSetting: measureData.measureSystemSetting,
-            ))
-      ],
-    );
+        margin: const EdgeInsets.symmetric(
+          horizontal: 15,
+        ),
+        child: PatternBody(
+          businessParent: businessParent,
+          measureSystemSetting: measureData.measureSystemSetting,
+        ));
   }
 
   // 保存修改结果
-  Future<void> _saveMeasureSystemSettingAsync() async {
+  Future<void> saveMeasureSystemSettingAsync() async {
     measureData.measureSystemSettingChanged
         .emit(this, measureData.measureSystemSetting);
     await measureData

+ 81 - 0
lib/view/measure/measure_panel_head.dart

@@ -0,0 +1,81 @@
+import 'package:fis_i18n/i18n.dart';
+import 'package:fis_measure/view/measure/measure_config/measure_configuation_page.dart';
+import 'package:fis_measure/view/measure/measure_config/widgets/measure_configuration_style.dart';
+import 'package:fis_measure/view/measure/operate_type_change_button.dart';
+import 'package:fis_theme/theme.dart';
+import 'package:fis_ui/index.dart';
+import 'package:fis_ui/interface/interactive_container.dart';
+import 'package:flutter/material.dart';
+import 'package:get/get.dart';
+
+/// 工具箱 样式配置之类
+class LeftSiderHold extends StatelessWidget implements FWidget {
+  const LeftSiderHold({Key? key, this.ifHideConfig = false}) : super(key: key);
+  final bool ifHideConfig; // 是否隐藏测量项配置入口
+
+  @override
+  FWidget build(BuildContext context) {
+    return FContainer(
+      width: 300,
+      padding: const EdgeInsets.symmetric(
+        horizontal: 10,
+        vertical: 15,
+      ),
+      child: FColumn(
+        // key: UniqueKey(),
+        mainAxisSize: MainAxisSize.max,
+        crossAxisAlignment: CrossAxisAlignment.start,
+        children: [
+          FRow(
+            mainAxisAlignment: MainAxisAlignment.spaceBetween,
+            children: [
+              // 工具箱文案
+              FText(
+                i18nBook.measure.toolbox.t,
+                style: const TextStyle(
+                  color: Colors.white,
+                ),
+              ),
+              LeftSiderHoldAllStyleConfig(ifHideConfig: ifHideConfig),
+            ],
+          ),
+          // const _LeftSiderTabBar(),
+          // _LeftSelectInput(),
+          // _LeftPulldown(),
+        ],
+      ),
+    );
+  }
+}
+
+/// 测量样式 和配置
+class LeftSiderHoldAllStyleConfig extends StatelessWidget
+    implements FInteractiveContainer {
+  const LeftSiderHoldAllStyleConfig({Key? key, this.ifHideConfig = false})
+      : super(key: key);
+  final bool ifHideConfig; // 是否隐藏测量项配置入口
+  @override
+  final String pageName = 'LeftSiderHoldAllStyleConfig';
+  @override
+  FWidget build(BuildContext context) {
+    return FRow(
+      children: [
+        FTextButton(
+          businessParent: this,
+          name: "toMeasureConfigurationPage",
+          onPressed: () {
+            Get.dialog(
+              MeasureConfigurationPage(ifHideConfig: ifHideConfig),
+            );
+          },
+          child: FText(
+            i18nBook.user.setting.t,
+            style: TextStyle(
+              color: FTheme.ins.colorScheme.primary,
+            ),
+          ),
+        )
+      ],
+    );
+  }
+}

+ 6 - 4
lib/view/measure/measure_search_input.dart

@@ -6,7 +6,7 @@ import 'package:fis_measure/process/workspace/measure_data_controller.dart';
 import 'package:fis_measure/process/workspace/measure_handler.dart';
 import 'package:fis_measure/utils/prompt_box.dart';
 import 'package:fis_measure/view/measure/operate_type_change_button.dart';
-import 'package:fis_measure/view/measure/tool_chest_title.dart';
+import 'package:fis_measure/view/measure/measure_panel_head.dart';
 import 'package:fis_measure/view/menu_button_group/menu_button_group.dart';
 import 'package:fis_ui/base_define/page.dart';
 import 'package:fis_ui/index.dart';
@@ -85,8 +85,10 @@ class _LeftSelectInputState extends FState<LeftSelectInput> {
               child: FIconButton(
                 name: "pleaseAddCcomment",
                 onPressed: () async {
-                  if (annotationItem.isEmpty) {
-                    PromptBox.toast(i18nBook.measure.AddCcomment.t);
+                  //判断添加的注释不为空
+                  if (annotationItem.isEmpty ||
+                      annotationItem.replaceAll(" ", "").isEmpty) {
+                    PromptBox.toast(i18nBook.measure.annotationCannotBeEmpty.t);
                   } else {
                     var result = await measureData.addAnnotation(
                       application,
@@ -116,7 +118,7 @@ class _LeftSelectInputState extends FState<LeftSelectInput> {
           FCustomLeftTooltip(
             textStyle: const TextStyle(fontSize: 14, color: Colors.white),
             height: 32,
-            message: "恢复为默认的注释项", //TODO:[Gavin] i18n
+            message: i18nBook.measure.resetToDefaultAnnotation.t,
             margin: const EdgeInsets.only(right: 10),
             decoration: BoxDecoration(
               color: const Color.fromARGB(255, 238, 105, 95),

+ 1 - 1
lib/view/measure/measure_tool_panel.dart

@@ -16,7 +16,7 @@ import 'package:fis_measure/view/measure/carotid_measure_tool.dart';
 import 'package:fis_measure/view/measure/measure_tools_title.dart';
 import 'package:fis_measure/view/measure/measure_view_controller.dart';
 import 'package:fis_measure/view/measure/operate_type_change_button.dart';
-import 'package:fis_measure/view/measure/tool_chest_title.dart';
+import 'package:fis_measure/view/measure/measure_panel_head.dart';
 import 'package:fis_ui/index.dart';
 import 'package:fis_ui/interface/interactive_container.dart';
 import 'package:fis_ui/widgets/layout/offstage.dart';

+ 0 - 257
lib/view/measure/tool_chest_title.dart

@@ -1,257 +0,0 @@
-import 'package:fis_i18n/i18n.dart';
-import 'package:fis_measure/view/measure/measure_config/measure_configuation_page.dart';
-import 'package:fis_measure/view/measure/measure_config/widgets/measure_configuration_style.dart';
-import 'package:fis_measure/view/measure/operate_type_change_button.dart';
-import 'package:fis_theme/theme.dart';
-import 'package:fis_ui/index.dart';
-import 'package:fis_ui/interface/interactive_container.dart';
-import 'package:flutter/material.dart';
-import 'package:get/get.dart';
-
-/// 下拉选择的类
-// class MeasureSelectModel {
-//   MeasureSelectModel({required this.name, required this.code});
-//   final String name;
-//   final String code;
-// }
-
-// enum MeasureOperateType {
-//   tabMeasureTool,
-//   tabNodesTool,
-// }
-
-/// 工具箱 样式配置之类
-class LeftSiderHold extends StatelessWidget implements FWidget {
-  const LeftSiderHold({Key? key, this.ifHideConfig = false}) : super(key: key);
-  final bool ifHideConfig; // 是否隐藏测量项配置入口
-
-  @override
-  FWidget build(BuildContext context) {
-    return FContainer(
-      width: 300,
-      padding: const EdgeInsets.symmetric(
-        horizontal: 10,
-        vertical: 15,
-      ),
-      child: FColumn(
-        // key: UniqueKey(),
-        mainAxisSize: MainAxisSize.max,
-        crossAxisAlignment: CrossAxisAlignment.start,
-        children: [
-          FRow(
-            mainAxisAlignment: MainAxisAlignment.spaceBetween,
-            children: [
-              // 工具箱文案
-              FText(
-                i18nBook.measure.toolbox.t,
-                style: const TextStyle(
-                  color: Colors.white,
-                ),
-              ),
-              LeftSiderHoldAllStyleConfig(ifHideConfig: ifHideConfig),
-            ],
-          ),
-          // const _LeftSiderTabBar(),
-          // _LeftSelectInput(),
-          // _LeftPulldown(),
-        ],
-      ),
-    );
-  }
-}
-
-/// 测量样式 和配置
-class LeftSiderHoldAllStyleConfig extends StatelessWidget
-    implements FInteractiveContainer {
-  const LeftSiderHoldAllStyleConfig({Key? key, this.ifHideConfig = false})
-      : super(key: key);
-  final bool ifHideConfig; // 是否隐藏测量项配置入口
-  @override
-  final String pageName = 'LeftSiderHoldAllStyleConfig';
-  @override
-  FWidget build(BuildContext context) {
-    return FRow(
-      children: [
-        FTextButton(
-          name: "toPatternDialog",
-          businessParent: this,
-          onPressed: () {
-            Get.dialog(
-              PatternDialog(
-                businessParent: this,
-              ),
-            );
-          },
-          child: FText(
-            i18nBook.measure.style.t,
-            style: TextStyle(
-              color: FTheme.ins.colorScheme.primary,
-            ),
-          ),
-        ),
-        if (!ifHideConfig) ...[
-          FTextButton(
-            businessParent: this,
-            name: "toMeasureConfigurationPage",
-            onPressed: () {
-              Get.dialog(
-                const MeasureConfigurationPage(),
-              );
-            },
-            child: FText(
-              i18nBook.measure.config.t,
-              style: TextStyle(
-                color: FTheme.ins.colorScheme.primary,
-              ),
-            ),
-          )
-        ]
-      ],
-    );
-  }
-}
-
-/// 测量工具 注释工具Tab [已废弃:重构为]
-// class _LeftSiderTabBar extends StatefulWidget implements FWidget {
-//   const _LeftSiderTabBar();
-
-//   @override
-//   State<_LeftSiderTabBar> createState() => _LeftSiderTabBarState();
-// }
-
-// class _LeftSiderTabBarState extends State<_LeftSiderTabBar>
-//     with TickerProviderStateMixin {
-//   late final measureHandler = Get.find<MeasureHandler>();
-//   late TabController tabController;
-//   List<Center> tabs = [];
-//   late final measureData = Get.find<MeasureDataController>();
-
-//   /// 全部图片list
-//   final measureController = Get.find<MeasureController>();
-//   VidPlayerController playerController =
-//       Get.find<IPlayerController>() as VidPlayerController;
-
-//   @override
-//   void initState() {
-//     super.initState();
-//     measureHandler.annotationsLoaded.addListener(onAnnotationsLoaded);
-//     measureController.imageLoaded.addListener(_onImageLoaded);
-//   }
-
-//   @override
-//   void dispose() {
-//     super.dispose();
-//     measureHandler.annotationsLoaded.removeListener(onAnnotationsLoaded);
-//     measureController.imageLoaded.removeListener(_onImageLoaded);
-//     tabController.dispose();
-//   }
-
-//   void initTab() {
-//     final application = Get.find<IApplication>();
-
-//     ///TODO:[Gavin] 虽然屏蔽了多幅,但是切换至多幅时候仍会存在问题【虽然只显示注释,但是默认会被切换至第一个测量项】
-//     ///原因是Tab页切换优化为了FOffstage的方式,Measure Tab 实际没有被 dispose
-//     ///比较妥协的临时解决方案是,触发切换注释时加上 500ms 延时【line 178:180】
-//     if (application.isSingleFrame && application.visuals.length > 1) {
-//       //多幅vid
-//       tabs = [i18nBook.measure.annotationTool.t]
-//           .map((e) => Center(child: Tab(text: e)))
-//           .toList();
-//       changeTabTo(MeasureOperateType.tabNodesTool);
-//     } else {
-//       tabs = [i18nBook.measure.measureTool.t, i18nBook.measure.annotationTool.t]
-//           .map((e) => Center(child: Tab(text: e)))
-//           .toList();
-//       changeTabTo(MeasureOperateType.tabMeasureTool);
-//     }
-//     setState(() {});
-//   }
-
-//   void changeTabTo(e) {
-//     measureHandler.currOperateType = e;
-//     if (e == MeasureOperateType.tabMeasureTool) {
-//       final measureMetaController = Get.find<MeasureMetaController>();
-//       measureMetaController.setAvailableModes(measureData.currentMode);
-//       measureMetaController.updateItemList();
-//     } else {
-//       final application = Get.find<IApplication>();
-//       Future.delayed(const Duration(milliseconds: 500), () {
-//         application.switchAnnotation(AnnotationType.label, "test");
-//       });
-//     }
-//   }
-
-//   // 应该在图像注释获取完成后再触发initTab
-//   void onAnnotationsLoaded(Object sender, _) {
-//     if (!mounted) return;
-//     initTab();
-//   }
-
-//   void _onFrameLoadedAfterFirst(Object sender, VidUsImage? e) {
-//     if (!mounted) return;
-//     initTab();
-//     playerController.firstFrameLoaded.removeListener(_onFrameLoadedAfterFirst);
-//   }
-
-//   void _onImageLoaded(Object sender, ExamImageInfo? e) {
-//     playerController = Get.find<IPlayerController>() as VidPlayerController;
-//     playerController.firstFrameLoaded.addListener(_onFrameLoadedAfterFirst);
-//   }
-
-//   @override
-//   void didUpdateWidget(covariant _LeftSiderTabBar oldWidget) {
-//     super.didUpdateWidget(oldWidget);
-//   }
-
-//   @override
-//   FWidget build(BuildContext context) {
-//     tabController = TabController(
-//       vsync: this,
-//       length: tabs.length,
-//       initialIndex: 0,
-//     );
-//     final _colorScheme = FTheme.ins.colorScheme;
-
-//     return FTabBar(
-//       indicatorWeight: 2,
-//       indicatorColor: _colorScheme.primary,
-//       labelColor: _colorScheme.primary,
-//       indicatorSize: TabBarIndicatorSize.label,
-//       unselectedLabelColor: Colors.white,
-//       onTap: (int index) {
-//         try {
-//           changeTabTo(MeasureOperateType.values[index]);
-//         } catch (e) {
-//           debugPrint(e.toString());
-//         }
-//       },
-//       tabs: tabs,
-//       controller: tabController,
-//     );
-//   }
-// }
-
-// class _LeftPulldown extends StatelessWidget implements FWidget {
-//   @override
-//   FWidget build(BuildContext context) {
-//     return FContainer(
-//       margin: const EdgeInsets.symmetric(vertical: 4),
-//       child: FSelect<MeasureSelectModel, String>(
-//         source: [
-//           MeasureSelectModel(
-//             name: 'General',
-//             code: 'General',
-//           )
-//         ],
-//         hintText: i18nBook.measure.selectMeasureItem.t,
-//         value: 'General',
-//         clearable: false,
-//         height: 36,
-//         width: 400,
-//         optionLabelExtractor: (data) => data.name,
-//         optionValueExtractor: (data) => data.code,
-//         onSelectChanged: (value, index) {},
-//       ),
-//     );
-//   }
-// }

+ 1 - 1
pubspec.yaml

@@ -96,7 +96,7 @@ dependency_overrides:
   fis_i18n:
     git:
       url: http://git.ius.plus:88/Project-Wing/fis_lib_i18n.git
-      ref: 71bdfc1d72
+      ref: "0e26570"
   fis_jsonrpc:
     git:
       url: http://git.ius.plus:88/Project-Wing/fis_lib_jsonrpc.git