measure_search_input.dart 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  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. //判断添加的注释不为空
  79. if (annotationItem.isEmpty ||
  80. annotationItem.replaceAll(" ", "").isEmpty) {
  81. PromptBox.toast(i18nBook.measure.annotationCannotBeEmpty.t);
  82. } else {
  83. var result = await measureData.addAnnotation(
  84. application,
  85. annotationItem,
  86. );
  87. if (result ?? false) {
  88. measureHandler.currOperateType =
  89. MeasureOperateType.measure;
  90. measureHandler.currOperateType =
  91. MeasureOperateType.annotation;
  92. getAnnotationList();
  93. }
  94. }
  95. },
  96. icon: const FIcon(
  97. Icons.add,
  98. ),
  99. businessParent: widget,
  100. ),
  101. ),
  102. hintText: i18nBook.measure.AddCcomment.t,
  103. onChanged: (value) {
  104. annotationItem = value;
  105. },
  106. ),
  107. const FSizedBox(width: 5),
  108. FCustomLeftTooltip(
  109. textStyle: const TextStyle(fontSize: 14, color: Colors.white),
  110. height: 32,
  111. message: i18nBook.measure.resetToDefaultAnnotation.t,
  112. margin: const EdgeInsets.only(right: 10),
  113. decoration: BoxDecoration(
  114. color: const Color.fromARGB(255, 238, 105, 95),
  115. borderRadius: BorderRadius.circular(4),
  116. ),
  117. child: FSizedBox(
  118. width: 40,
  119. height: 40,
  120. child: FElevatedButton(
  121. style: ButtonStyle(
  122. padding: const MaterialStatePropertyAll(EdgeInsets.all(0)),
  123. backgroundColor: MaterialStateProperty.all(Colors.grey),
  124. ),
  125. child: const FIcon(Icons.restart_alt),
  126. onPressed: resetUserCommentsAsync,
  127. businessParent: widget,
  128. name: "resetUserCommentsAsync"),
  129. ),
  130. ),
  131. ],
  132. ),
  133. );
  134. }
  135. }