controller.dart 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. import 'package:electronic_assistant/base/base_controller.dart';
  2. import 'package:electronic_assistant/data/bean/template_bean.dart';
  3. import 'package:electronic_assistant/data/repositories/template_repository.dart';
  4. import 'package:electronic_assistant/resource/string.gen.dart';
  5. import 'package:electronic_assistant/utils/error_handler.dart';
  6. import 'package:electronic_assistant/utils/toast_util.dart';
  7. import 'package:flutter/cupertino.dart';
  8. import 'package:get/get.dart';
  9. import 'package:get/get_core/src/get_main.dart';
  10. import '../../../dialog/rename_dialog.dart';
  11. class TemplateEditController extends BaseController {
  12. int? templateId;
  13. final titleController = TextEditingController();
  14. final focusNode = FocusNode();
  15. TemplateBean? targetTemplateBean;
  16. final Rxn<String> _defaultTemplate = Rxn();
  17. String? get defaultTemplate => _defaultTemplate.value;
  18. final RxList<String> templateCustomTitle = RxList();
  19. @override
  20. void onInit() {
  21. super.onInit();
  22. var arguments = Get.arguments;
  23. if (arguments is TemplateBean) {
  24. targetTemplateBean = arguments;
  25. templateId = arguments.id;
  26. titleController.text = arguments.name ?? '';
  27. templateCustomTitle.assignAll(arguments.titles ?? []);
  28. _defaultTemplate.value = arguments.defaultTitle;
  29. }
  30. if (templateId == null) {
  31. _getDefaultTitle();
  32. }
  33. }
  34. void _getDefaultTitle() {
  35. templateRepository.defaultInfo().then((data) {
  36. _defaultTemplate.value = data;
  37. }).catchError((error) {
  38. ErrorHandler.toastError(error);
  39. });
  40. }
  41. @override
  42. void onReady() {
  43. super.onReady();
  44. }
  45. void onBack() {
  46. Get.back();
  47. }
  48. void onCancel() {
  49. Get.back();
  50. }
  51. void onSaveTemplate() {
  52. if (titleController.text.isEmpty) {
  53. ToastUtil.showToast(StringName.templateEditNameHint.tr);
  54. return;
  55. }
  56. if (templateCustomTitle.isEmpty) {
  57. ToastUtil.showToast(StringName.templateTitleNotFail.tr);
  58. return;
  59. }
  60. templateRepository
  61. .templateUpdate(templateId, titleController.text, templateCustomTitle)
  62. .then((data) async {
  63. if (templateId == null) {
  64. ToastUtil.showToast(StringName.templateAddSuccess.tr);
  65. } else {
  66. targetTemplateBean?.name = titleController.text;
  67. targetTemplateBean?.titles = templateCustomTitle;
  68. ToastUtil.showToast(StringName.templateUpdateSuccess.tr);
  69. }
  70. await Future.delayed(const Duration(milliseconds: 400));
  71. Get.back(result: true);
  72. }).catchError((error) {
  73. ErrorHandler.toastError(error);
  74. });
  75. }
  76. void clearTextFieldSelection() {
  77. focusNode.unfocus();
  78. }
  79. void onAddTemplate() {
  80. clearTextFieldSelection();
  81. reNameDialog(StringName.templateDialogAddTitle.tr, null,
  82. hintTxt: StringName.templateDialogAddTitleHint.tr,
  83. maxLength: 30, returnBuilder: (newValue) {
  84. templateCustomTitle.add(newValue);
  85. });
  86. }
  87. void onDeleteTemplate(int index) {
  88. templateCustomTitle.removeAt(index);
  89. }
  90. void onUpdateTemplate(int index, String txt) {
  91. reNameDialog(StringName.templateDialogUpdateTitle.tr, txt,
  92. hintTxt: StringName.templateDialogAddTitleHint.tr,
  93. maxLength: 30, returnBuilder: (newValue) {
  94. templateCustomTitle[index] = newValue;
  95. });
  96. }
  97. }