import 'package:fis_i18n/i18n.dart'; import 'package:fis_jsonrpc/rpc.dart'; import 'package:fis_measure/interfaces/enums/operate.dart'; import 'package:fis_measure/interfaces/process/workspace/application.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/measure/operate_type_change_button.dart'; import 'package:fis_measure/view/measure/measure_panel_head.dart'; import 'package:fis_measure/view/menu_button_group/menu_button_group.dart'; import 'package:fis_ui/base_define/page.dart'; import 'package:fis_ui/index.dart'; import 'package:fis_ui/interface/interactive_container.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; class LeftSelectInput extends FStatefulWidget implements FInteractiveContainer { @override final String pageName = 'LeftSelectInput'; const LeftSelectInput({super.key}); @override FState createState() => _LeftSelectInputState(); } class _LeftSelectInputState extends FState { late final application = Get.find(); /// 数据 late final measureData = Get.find(); late final measureHandler = Get.find(); String annotationItem = ''; /// 添加操作后更新注释 void getAnnotationList() async { List annotationList = []; var measureCommentItemResult = await measureData.getCommentsByApplicationAsync( application.applicationName, application.categoryName, ); measureData.measureCommentItemResult = measureCommentItemResult?.commentItems ?? []; measureCommentItemResult?.commentItems?.forEach((element) { annotationList.add(element.text ?? ''); }); measureData.annotationList = annotationList; } /// 添加操作后更新注释 void resetUserCommentsAsync() async { var resetUserCommentsResult = await measureData.resetUserCommentsAsync( application.applicationName, application.categoryName, ); if (resetUserCommentsResult ?? false) { PromptBox.toast("恢复成功"); getAnnotationList(); } } @override FWidget build(BuildContext context) { return FContainer( padding: const EdgeInsets.only( left: 15, right: 15, bottom: 5, ), child: FRow( crossAxisAlignment: CrossAxisAlignment.center, children: [ FBorderInput( height: 38, hintSize: 16, contentSize: 16, maxLength: 20, fillColor: Colors.white, borderColor: const Color.fromARGB(255, 187, 180, 180), suffixIcon: FMaterial( color: Colors.transparent, child: FIconButton( name: "pleaseAddCcomment", onPressed: () async { if (annotationItem.isEmpty) { PromptBox.toast(i18nBook.measure.AddCcomment.t); } else { var result = await measureData.addAnnotation( application, annotationItem, ); if (result ?? false) { measureHandler.currOperateType = MeasureOperateType.measure; measureHandler.currOperateType = MeasureOperateType.annotation; getAnnotationList(); } } }, icon: const FIcon( Icons.add, ), businessParent: widget, ), ), hintText: i18nBook.measure.AddCcomment.t, onChanged: (value) { annotationItem = value; }, ), const FSizedBox(width: 5), FCustomLeftTooltip( textStyle: const TextStyle(fontSize: 14, color: Colors.white), height: 32, message: "恢复为默认的注释项", //TODO:[Gavin] i18n margin: const EdgeInsets.only(right: 10), decoration: BoxDecoration( color: const Color.fromARGB(255, 238, 105, 95), borderRadius: BorderRadius.circular(4), ), child: FSizedBox( width: 40, height: 40, child: FElevatedButton( style: ButtonStyle( padding: const MaterialStatePropertyAll(EdgeInsets.all(0)), backgroundColor: MaterialStateProperty.all(Colors.grey), ), child: const FIcon(Icons.restart_alt), onPressed: resetUserCommentsAsync, businessParent: widget, name: "resetUserCommentsAsync"), ), ), ], ), ); } }