measure_search_input.dart 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. import 'package:fis_i18n/i18n.dart';
  2. import 'package:fis_jsonrpc/rpc.dart';
  3. import 'package:fis_measure/interfaces/enums/operate.dart';
  4. import 'package:fis_measure/interfaces/process/workspace/application.dart';
  5. import 'package:fis_measure/process/workspace/measure_data_controller.dart';
  6. import 'package:fis_measure/process/workspace/measure_handler.dart';
  7. import 'package:fis_measure/utils/prompt_box.dart';
  8. import 'package:fis_measure/view/measure/operate_type_change_button.dart';
  9. import 'package:fis_measure/view/measure/measure_panel_head.dart';
  10. import 'package:fis_measure/view/menu_button_group/menu_button_group.dart';
  11. import 'package:fis_ui/base_define/page.dart';
  12. import 'package:fis_ui/index.dart';
  13. import 'package:fis_ui/interface/interactive_container.dart';
  14. import 'package:flutter/material.dart';
  15. import 'package:get/get.dart';
  16. class LeftSelectInput extends FStatefulWidget implements FInteractiveContainer {
  17. @override
  18. final String pageName = 'LeftSelectInput';
  19. const LeftSelectInput({super.key});
  20. @override
  21. FState<LeftSelectInput> createState() => _LeftSelectInputState();
  22. }
  23. class _LeftSelectInputState extends FState<LeftSelectInput> {
  24. late final application = Get.find<IApplication>();
  25. /// 数据
  26. late final measureData = Get.find<MeasureDataController>();
  27. late final measureHandler = Get.find<MeasureHandler>();
  28. String annotationItem = '';
  29. /// 添加操作后更新注释
  30. void getAnnotationList() async {
  31. List<String> annotationList = [];
  32. var measureCommentItemResult =
  33. await measureData.getCommentsByApplicationAsync(
  34. application.applicationName,
  35. application.categoryName,
  36. );
  37. measureData.measureCommentItemResult =
  38. measureCommentItemResult?.commentItems ?? [];
  39. measureCommentItemResult?.commentItems?.forEach((element) {
  40. annotationList.add(element.text ?? '');
  41. });
  42. measureData.annotationList = annotationList;
  43. }
  44. /// 添加操作后更新注释
  45. void resetUserCommentsAsync() async {
  46. var resetUserCommentsResult = await measureData.resetUserCommentsAsync(
  47. application.applicationName,
  48. application.categoryName,
  49. );
  50. if (resetUserCommentsResult ?? false) {
  51. PromptBox.toast("恢复成功");
  52. getAnnotationList();
  53. }
  54. }
  55. @override
  56. FWidget build(BuildContext context) {
  57. return FContainer(
  58. padding: const EdgeInsets.only(
  59. left: 15,
  60. right: 15,
  61. bottom: 5,
  62. ),
  63. child: FRow(
  64. crossAxisAlignment: CrossAxisAlignment.center,
  65. children: [
  66. FBorderInput(
  67. height: 38,
  68. hintSize: 16,
  69. contentSize: 16,
  70. maxLength: 20,
  71. fillColor: Colors.white,
  72. borderColor: const Color.fromARGB(255, 187, 180, 180),
  73. suffixIcon: FMaterial(
  74. color: Colors.transparent,
  75. child: FIconButton(
  76. name: "pleaseAddCcomment",
  77. onPressed: () async {
  78. if (annotationItem.isEmpty) {
  79. PromptBox.toast(i18nBook.measure.AddCcomment.t);
  80. } else {
  81. var result = await measureData.addAnnotation(
  82. application,
  83. annotationItem,
  84. );
  85. if (result ?? false) {
  86. measureHandler.currOperateType =
  87. MeasureOperateType.measure;
  88. measureHandler.currOperateType =
  89. MeasureOperateType.annotation;
  90. getAnnotationList();
  91. }
  92. }
  93. },
  94. icon: const FIcon(
  95. Icons.add,
  96. ),
  97. businessParent: widget,
  98. ),
  99. ),
  100. hintText: i18nBook.measure.AddCcomment.t,
  101. onChanged: (value) {
  102. annotationItem = value;
  103. },
  104. ),
  105. const FSizedBox(width: 5),
  106. FCustomLeftTooltip(
  107. textStyle: const TextStyle(fontSize: 14, color: Colors.white),
  108. height: 32,
  109. message: "恢复为默认的注释项", //TODO:[Gavin] i18n
  110. margin: const EdgeInsets.only(right: 10),
  111. decoration: BoxDecoration(
  112. color: const Color.fromARGB(255, 238, 105, 95),
  113. borderRadius: BorderRadius.circular(4),
  114. ),
  115. child: FSizedBox(
  116. width: 40,
  117. height: 40,
  118. child: FElevatedButton(
  119. style: ButtonStyle(
  120. padding: const MaterialStatePropertyAll(EdgeInsets.all(0)),
  121. backgroundColor: MaterialStateProperty.all(Colors.grey),
  122. ),
  123. child: const FIcon(Icons.restart_alt),
  124. onPressed: resetUserCommentsAsync,
  125. businessParent: widget,
  126. name: "resetUserCommentsAsync"),
  127. ),
  128. ),
  129. ],
  130. ),
  131. );
  132. }
  133. }