123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215 |
- import 'package:fis_i18n/i18n.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_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/button_group/widget/qr_code_with_logo.dart';
- import 'package:fis_measure/view/mobile_view/controller/mobile_measure_view_state_controller.dart';
- import 'package:fis_measure/view/mobile_view/widgets/animated_icon_btn.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<StatefulWidget> createState() => _MobileTopMenuState();
- }
- class _MobileTopMenuState extends State<MobileTopMenu> {
- final application = Get.find<IApplication>();
- final measureHandler = Get.find<IMeasureHandler>();
- final measureData = Get.find<MeasureDataController>();
- final mobileMeasureStateController =
- Get.find<MobileMeasureViewStateController>();
- @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<Widget> _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(),
- _saveBtn(),
- _deleteBtn(),
- _undoBtn(),
- ];
- default:
- return [Container()];
- }
- }
- Widget _saveBtn() {
- return LoadingAnimatedIconButton(
- icon: Icons.save,
- onPressed: () {
- widget.capturePng();
- },
- );
- }
- Widget _shareBtn() {
- return LoadingAnimatedIconButton(
- animationDuration: 600,
- icon: Icons.share,
- onPressed: () async {
- var itemCurrentImage = await measureData.shareImage.call(
- measureData.itemCurrentImage,
- );
- Get.dialog(_buildShareQr(itemCurrentImage));
- },
- );
- }
- Widget _editBtn() {
- return SingleIconButton(
- icon: Icons.edit,
- onPressed: () {
- print("call 进入撰写报告");
- },
- );
- }
- Widget _backBtn() {
- return SingleIconButton(
- icon: Icons.arrow_back_ios_new,
- onPressed: () {
- Get.back();
- },
- );
- }
- Widget _exitBtn() {
- return SingleIconButton(
- icon: Icons.exit_to_app,
- onPressed: () {
- mobileMeasureStateController.currentMode = MobileMeasureMode.playerMode;
- },
- );
- }
- Widget _deleteBtn() {
- return SingleIconButton(
- icon: Icons.delete_outline,
- onPressed: () {
- application.clearRecords();
- ///FIXME:[Gavin] 有时候删除了画布记录,但是没有刷新
- },
- );
- }
- 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,
- );
- }
- Widget _buildShareQr(String itemCurrentImage) {
- return SimpleDialog(
- children: [
- Container(
- width: 260,
- child: Container(
- padding: const EdgeInsets.only(top: 10, bottom: 10),
- child: QRCodeWithLogo(
- itemCurrentImage,
- codeStatement: '扫描二维码,分享图像',
- operationStatement: i18nBook.remedical.copyLink.t,
- operationSuccessCallback: () =>
- {PromptBox.toast(i18nBook.remedical.copySuccess.t)},
- size: 180,
- ),
- ),
- ),
- ],
- );
- }
- }
|