measure_panel_head.dart 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. import 'package:fis_i18n/i18n.dart';
  2. import 'package:fis_measure/interfaces/enums/operate.dart';
  3. import 'package:fis_measure/process/workspace/measure_data_controller.dart';
  4. import 'package:fis_measure/process/workspace/measure_handler.dart';
  5. import 'package:fis_measure/view/measure/measure_config/measure_configuation_page.dart';
  6. import 'package:fis_theme/theme.dart';
  7. import 'package:fis_ui/index.dart';
  8. import 'package:fis_ui/interface/interactive_container.dart';
  9. import 'package:flutter/material.dart';
  10. import 'package:get/get.dart';
  11. /// 工具箱 样式配置之类
  12. class LeftSiderHold extends StatefulWidget implements FWidget {
  13. const LeftSiderHold({
  14. Key? key,
  15. this.customWidgets = const [],
  16. this.ifHideConfig = false,
  17. }) : super(key: key);
  18. // 是否隐藏测量项配置入口
  19. final bool ifHideConfig;
  20. final List<FWidget> customWidgets;
  21. @override
  22. State<LeftSiderHold> createState() => _LeftSiderHoldState();
  23. }
  24. class _LeftSiderHoldState extends State<LeftSiderHold> {
  25. // 是否显示设置按钮
  26. bool isShowSetting = true;
  27. final measureHandler = Get.find<MeasureHandler>();
  28. @override
  29. void initState() {
  30. measureHandler.onOperateTypeChanged.addListener(_onOperateTypeChanged);
  31. super.initState();
  32. }
  33. @override
  34. void dispose() {
  35. measureHandler.onOperateTypeChanged.removeListener(_onOperateTypeChanged);
  36. super.dispose();
  37. }
  38. void _onOperateTypeChanged(_, MeasureOperateType e) {
  39. if (e == MeasureOperateType.measure) {
  40. setState(() {
  41. isShowSetting = true;
  42. });
  43. } else {
  44. setState(() {
  45. isShowSetting = false;
  46. });
  47. }
  48. }
  49. @override
  50. FWidget build(BuildContext context) {
  51. final mediaQuery = MediaQuery.of(context);
  52. ///屏幕缩放比例
  53. final devicePixelRatio = mediaQuery.devicePixelRatio;
  54. return FContainer(
  55. width: 300 / devicePixelRatio,
  56. padding: const EdgeInsets.symmetric(
  57. horizontal: 10,
  58. vertical: 15,
  59. ),
  60. child: FColumn(
  61. // key: UniqueKey(),
  62. mainAxisSize: MainAxisSize.max,
  63. crossAxisAlignment: CrossAxisAlignment.start,
  64. children: [
  65. FRow(
  66. mainAxisAlignment: MainAxisAlignment.spaceBetween,
  67. children: [
  68. if (isShowSetting)
  69. SettingButton(ifHideConfig: widget.ifHideConfig),
  70. if (widget.customWidgets.isNotEmpty) ...[
  71. ...widget.customWidgets,
  72. ],
  73. ],
  74. ),
  75. // const _LeftSiderTabBar(),
  76. // _LeftSelectInput(),
  77. // _LeftPulldown(),
  78. ],
  79. ),
  80. );
  81. }
  82. }
  83. /// 测量样式 和 测量项配置 入口
  84. class SettingButton extends StatelessWidget implements FInteractiveContainer {
  85. SettingButton({Key? key, this.ifHideConfig = false}) : super(key: key);
  86. final bool ifHideConfig; // 是否隐藏测量项配置入口
  87. final measureData = Get.find<MeasureDataController>();
  88. @override
  89. final String pageName = 'SettingButton';
  90. @override
  91. FWidget build(BuildContext context) {
  92. return FTextButton(
  93. businessParent: this,
  94. name: "toMeasureConfigurationPage",
  95. onPressed: () {
  96. measureData.itemMetaListConfig = [];
  97. Get.dialog(
  98. MeasureConfigurationPage(ifHideConfig: ifHideConfig),
  99. );
  100. },
  101. child: FText(
  102. i18nBook.user.setting.t,
  103. style: TextStyle(
  104. color: FTheme.ins.colorScheme.primary,
  105. ),
  106. ),
  107. );
  108. }
  109. }