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/widgets/icon_btn.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; class MobileTopMenu extends StatefulWidget { final VoidCallback capturePng; const MobileTopMenu({ Key? key, required this.capturePng, }) : super(key: key); @override State createState() => _MobileTopMenuState(); } class _MobileTopMenuState extends State { final application = Get.find(); final measureHandler = Get.find(); final mobileMeasureStateController = Get.find(); @override void initState() { mobileMeasureStateController.onModeChanged.addListener(_onViewModeChanged); super.initState(); } @override void dispose() { mobileMeasureStateController.onModeChanged .removeListener(_onViewModeChanged); super.dispose(); } MobileMeasureMode curMode = MobileMeasureMode.playerMode; void _onViewModeChanged(Object s, MobileMeasureMode mode) { setState(() { curMode = mode; }); } @override Widget build(BuildContext context) { return Column( mainAxisSize: MainAxisSize.max, mainAxisAlignment: MainAxisAlignment.start, children: [ SizedBox( height: 50, child: Container( padding: const EdgeInsets.only(left: 10), child: Row( mainAxisAlignment: MainAxisAlignment.start, children: [ ..._buttons(), ], ), ), ), ], ); } List _buttons() { switch (curMode) { case MobileMeasureMode.playerMode: return [ _fillCustomSpace(10), _backBtn(), _fillEmptySpace(), _saveBtn(), _editBtn(), _shareBtn(), _fillCustomSpace(150) ]; case MobileMeasureMode.measureMode: return [ _exitBtn(), const Text('测量模式'), _fillEmptySpace(), _saveBtn(), _deleteBtn(), _undoBtn(), ]; case MobileMeasureMode.annotationMode: return [ _exitBtn(), const Text('注释模式'), _fillEmptySpace(), _annotationBtn(), _arrowBtn(), _saveBtn(), _deleteBtn(), _undoBtn(), ]; default: return [Container()]; } } Widget _saveBtn() { return SingleIconButton( icon: Icons.save, onPressed: () { widget.capturePng(); }, ); } Widget _shareBtn() { return SingleIconButton( icon: Icons.share, onPressed: () { print("call 分享"); }, ); } Widget _editBtn() { return SingleIconButton( icon: Icons.edit, onPressed: () { print("call 进入撰写报告"); }, ); } Widget _backBtn() { return SingleIconButton( icon: Icons.arrow_back_ios_new, onPressed: () { print("call 返回"); }, ); } Widget _exitBtn() { return SingleIconButton( icon: Icons.exit_to_app, onPressed: () { print("call 退出当前模式"); mobileMeasureStateController.currentMode = MobileMeasureMode.playerMode; }, ); } Widget _annotationBtn() { return SingleIconButton( icon: Icons.abc, onPressed: () { print("call 注释模式"); }, ); } Widget _arrowBtn() { return SingleIconButton( icon: Icons.compare_arrows_rounded, onPressed: () { print("call 箭头模式"); }, ); } Widget _deleteBtn() { return SingleIconButton( icon: Icons.delete_outline, onPressed: () { application.clearRecords(); }, ); } Widget _undoBtn() { return SingleIconButton( icon: Icons.redo, onPressed: () { application.undoRecord(); }, ); } Widget _fillEmptySpace() { return Expanded( child: SizedBox( height: 1, width: MediaQuery.of(context).size.width, ), ); } Widget _fillCustomSpace(double width) { return SizedBox( width: width, ); } }