common_point_detail_controller.dart 3.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. import 'package:flutter/cupertino.dart';
  2. import 'package:get/get.dart';
  3. import 'package:get/get_core/src/get_main.dart';
  4. import 'package:injectable/injectable.dart';
  5. import 'package:location/base/base_controller.dart';
  6. import 'package:location/data/repositories/range_point_repository.dart';
  7. import 'package:location/dialog/loading_dialog.dart';
  8. import 'package:location/dialog/select_message_reminder_date_dialog.dart';
  9. import 'package:location/resource/string.gen.dart';
  10. import 'package:location/utils/toast_util.dart';
  11. import '../../../dialog/select_guard_time_dialog.dart';
  12. import '../select_address/common_point_select_address_page.dart';
  13. @injectable
  14. class CommonPointDetailController extends BaseController {
  15. final TextEditingController titleController = TextEditingController();
  16. final RxBool _isShowDuplicateName = RxBool(false);
  17. final Rxn<Map<String, dynamic>> _selectedAddressMap =
  18. Rxn<Map<String, dynamic>>();
  19. Map<String, dynamic>? get selectedAddressMap => _selectedAddressMap.value;
  20. bool get isShowDuplicateName => _isShowDuplicateName.value;
  21. final RxnString _guardTimePeriod = RxnString();
  22. String? get guardTimePeriod => _guardTimePeriod.value;
  23. DateTime? guardStartTime;
  24. DateTime? guardEndTime;
  25. final RxList<int> selectedWeekDays = RxList<int>();
  26. final RangePointRepository rangePointRepository;
  27. CommonPointDetailController(this.rangePointRepository);
  28. void onBack() {
  29. Get.back();
  30. }
  31. void onGuardTimePeriodClick() {
  32. hideKeyboard(Get.context!);
  33. SelectGuardTimeDialog.show(
  34. startDate: guardStartTime,
  35. endDate: guardEndTime,
  36. sureCallback: (DateTime startDate, DateTime endDate) {
  37. guardStartTime = startDate;
  38. guardEndTime = endDate;
  39. _guardTimePeriod.value =
  40. '${startDate.hour.toString().padLeft(2, '0')}:${startDate.minute.toString().padLeft(2, '0')}-${endDate.hour.toString().padLeft(2, '0')}:${endDate.minute.toString().padLeft(2, '0')}';
  41. });
  42. }
  43. void onSelectMessageReminderClick() {
  44. hideKeyboard(Get.context!);
  45. SelectMessageReminderDateDialog.show(
  46. selectWeekDays: selectedWeekDays,
  47. onSelected: (days) {
  48. selectedWeekDays.assignAll(days);
  49. });
  50. }
  51. void onSelectAddressClick() async {
  52. hideKeyboard(Get.context!);
  53. final selectAddressMap = await CommonPointSelectAddressPage.start();
  54. if (selectAddressMap == null || selectAddressMap.isEmpty) {
  55. return;
  56. }
  57. _selectedAddressMap.value = selectAddressMap;
  58. }
  59. void onPointSaveClick() {
  60. final title = titleController.text.trim();
  61. if (title.isEmpty) {
  62. ToastUtil.show(StringName.commonPointAddNameHint);
  63. return;
  64. }
  65. final String address = selectedAddressMap?['address'] ?? '';
  66. if (address.isEmpty) {
  67. ToastUtil.show(StringName.commonPointAddPleaseSelectAAddressHint);
  68. return;
  69. }
  70. if (guardStartTime == null || guardEndTime == null) {
  71. ToastUtil.show(StringName.commonPointAddGuardTimePeriodHint);
  72. return;
  73. }
  74. if (selectedWeekDays.isEmpty) {
  75. ToastUtil.show(StringName.commonPointAddMessageReminderHint);
  76. return;
  77. }
  78. _isShowDuplicateName.value = false;
  79. CustomLoadingDialog.show();
  80. final int radius = selectedAddressMap?['radius'] ?? 0;
  81. // rangePointRepository.pointInfoCreate(title: title, radius: radius);
  82. }
  83. }