import 'package:fis_measure/interfaces/enums/annotation.dart'; import 'package:fis_measure/interfaces/process/player/play_controller.dart'; import 'package:fis_measure/interfaces/process/workspace/application.dart'; import 'package:fis_measure/interfaces/process/workspace/mobile_measure_view_state_controller.dart'; import 'package:fis_measure/process/workspace/measure_handler.dart'; import 'package:fis_measure/view/mobile_view/controller/mobile_measure_view_state_controller.dart'; import 'package:fis_measure/view/mobile_view/mobile_control_board/mobile_control_board.dart'; import 'package:fis_measure/view/mobile_view/mobile_control_board/next_btn.dart'; import 'package:fis_measure/view/mobile_view/mobile_control_board/play_btn.dart'; import 'package:fis_measure/view/mobile_view/mobile_control_board/prev_btn.dart'; import 'package:fis_measure/view/mobile_view/widgets/icon_btn.dart'; import 'package:fis_measure/view/player/controller.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; class MobileBottomMenu extends StatefulWidget { const MobileBottomMenu({ Key? key, }) : super(key: key); @override State createState() => _MobileBottomMenuState(); } class _MobileBottomMenuState extends State { final application = Get.find(); late final measureHandler = Get.find(); final mobileMeasureStateController = Get.find(); late final playerController = Get.find(); @override void initState() { mobileMeasureStateController.onModeChanged.addListener(_onViewModeChanged); if ((playerController as VidPlayerController).totalFramesCount > 1) { setState(() { singleFrame = false; ifShowProgressBar = true; }); } super.initState(); } @override void dispose() { mobileMeasureStateController.onModeChanged .removeListener(_onViewModeChanged); super.dispose(); } bool singleFrame = true; bool ifShowProgressBar = false; bool ifShowMeasureBtn = true; bool ifShowAnnotationBtn = true; void _onViewModeChanged(Object s, MobileMeasureMode mode) { switch (mode) { case MobileMeasureMode.playerMode: setState(() { ifShowProgressBar = !singleFrame; ifShowMeasureBtn = true; ifShowAnnotationBtn = true; }); break; case MobileMeasureMode.measureMode: setState(() { ifShowProgressBar = false; ifShowMeasureBtn = false; ifShowAnnotationBtn = true; }); break; case MobileMeasureMode.annotationMode: setState(() { ifShowProgressBar = false; ifShowMeasureBtn = true; ifShowAnnotationBtn = false; }); break; } } @override Widget build(BuildContext context) { return _buildVidPlayerBoard(); } Widget _buildVidPlayerBoard() { return Stack(alignment: Alignment.bottomCenter, children: [ ifShowProgressBar ? SizedBox( height: 150, child: MobileVidControlBoard( playerController as VidPlayerController, ), ) : Container(), SizedBox( height: 75, child: Container( margin: const EdgeInsets.fromLTRB(40, 20, 20, 10), child: Row( children: [ if (ifShowProgressBar) ...[ SinglePrevButton(), SinglePlayButton(), SingleNextButton(), Expanded( child: SizedBox( height: 1, width: MediaQuery.of(context).size.width, ), ), ], SingleIconButton( icon: Icons.tune, onPressed: () { print("打开图像参数设置"); }, ), ifShowMeasureBtn ? SingleIconButton( icon: Icons.straighten, onPressed: () { print("进入测量模式"); mobileMeasureStateController.currentMode = MobileMeasureMode.measureMode; }, ) : Container(), ifShowAnnotationBtn ? SingleIconButton( icon: Icons.more, onPressed: () { measureHandler.changedAnnotationType = AnnotationType.label; application.switchAnnotation(AnnotationType.label); mobileMeasureStateController.currentMode = MobileMeasureMode.annotationMode; }, ) : Container(), ], ), ), ) ]); } }