controller.dart 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  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 TemplateDetailController extends BaseController {
  12. int? templateId;
  13. final titleController = TextEditingController();
  14. final focusNode = FocusNode();
  15. final Rxn<String> _defaultTemplate = Rxn();
  16. String? get defaultTemplate => _defaultTemplate.value;
  17. final RxList<String> templateCustomTitle = RxList();
  18. @override
  19. void onInit() {
  20. super.onInit();
  21. var arguments = Get.arguments;
  22. if (arguments is TemplateBean) {
  23. templateId = arguments.id;
  24. titleController.text = arguments.name ?? '';
  25. templateCustomTitle.assignAll(arguments.titles ?? []);
  26. }
  27. if (templateId == null) {
  28. _getDefaultTitle();
  29. }
  30. }
  31. void _getDefaultTitle() {
  32. templateRepository.defaultInfo().then((data) {
  33. _defaultTemplate.value = data;
  34. }).catchError((error) {
  35. ErrorHandler.toastError(error);
  36. });
  37. }
  38. @override
  39. void onReady() {
  40. super.onReady();
  41. }
  42. void onBack() {
  43. Get.back();
  44. }
  45. void onCancel() {
  46. Get.back();
  47. }
  48. void onSaveTemplate() {
  49. if (titleController.text.isEmpty) {
  50. ToastUtil.showToast(StringName.templateDetailNameHint.tr);
  51. return;
  52. }
  53. if (templateCustomTitle.isEmpty) {
  54. ToastUtil.showToast(StringName.templateTitleNotFail.tr);
  55. return;
  56. }
  57. templateRepository
  58. .templateUpdate(templateId, titleController.text, templateCustomTitle)
  59. .then((data) async {
  60. if (templateId == null) {
  61. ToastUtil.showToast(StringName.templateAddSuccess.tr);
  62. } else {
  63. ToastUtil.showToast(StringName.templateUpdateSuccess.tr);
  64. }
  65. await Future.delayed(const Duration(milliseconds: 400));
  66. Get.back(result: true);
  67. }).catchError((error) {
  68. ErrorHandler.toastError(error);
  69. });
  70. }
  71. void clearTextFieldSelection() {
  72. focusNode.unfocus();
  73. }
  74. void onAddTemplate() {
  75. clearTextFieldSelection();
  76. reNameDialog(StringName.templateDialogAddTitle.tr, null,
  77. hintTxt: StringName.templateDialogAddTitleHint.tr,
  78. maxLength: 30, returnBuilder: (newValue) {
  79. templateCustomTitle.add(newValue);
  80. });
  81. }
  82. void onDeleteTemplate(int index) {
  83. templateCustomTitle.removeAt(index);
  84. }
  85. void onUpdateTemplate(int index, String txt) {
  86. reNameDialog(StringName.templateDialogUpdateTitle.tr, txt,
  87. hintTxt: StringName.templateDialogAddTitleHint.tr,
  88. maxLength: 30, returnBuilder: (newValue) {
  89. templateCustomTitle[index] = newValue;
  90. });
  91. }
  92. }