import 'package:flutter/cupertino.dart'; import 'package:get/get.dart'; import 'package:get/get_core/src/get_main.dart'; import 'package:injectable/injectable.dart'; import 'package:location/base/base_controller.dart'; import 'package:location/data/repositories/range_point_repository.dart'; import 'package:location/dialog/loading_dialog.dart'; import 'package:location/dialog/select_message_reminder_date_dialog.dart'; import 'package:location/resource/string.gen.dart'; import 'package:location/utils/toast_util.dart'; import '../../../dialog/select_guard_time_dialog.dart'; import '../select_address/common_point_select_address_page.dart'; @injectable class CommonPointDetailController extends BaseController { final TextEditingController titleController = TextEditingController(); final RxBool _isShowDuplicateName = RxBool(false); final Rxn> _selectedAddressMap = Rxn>(); Map? get selectedAddressMap => _selectedAddressMap.value; bool get isShowDuplicateName => _isShowDuplicateName.value; final RxnString _guardTimePeriod = RxnString(); String? get guardTimePeriod => _guardTimePeriod.value; DateTime? guardStartTime; DateTime? guardEndTime; final RxList selectedWeekDays = RxList(); final RangePointRepository rangePointRepository; CommonPointDetailController(this.rangePointRepository); void onBack() { Get.back(); } void onGuardTimePeriodClick() { hideKeyboard(Get.context!); SelectGuardTimeDialog.show( startDate: guardStartTime, endDate: guardEndTime, sureCallback: (DateTime startDate, DateTime endDate) { guardStartTime = startDate; guardEndTime = endDate; _guardTimePeriod.value = '${startDate.hour.toString().padLeft(2, '0')}:${startDate.minute.toString().padLeft(2, '0')}-${endDate.hour.toString().padLeft(2, '0')}:${endDate.minute.toString().padLeft(2, '0')}'; }); } void onSelectMessageReminderClick() { hideKeyboard(Get.context!); SelectMessageReminderDateDialog.show(selectWeekDays: selectedWeekDays); } void onSelectAddressClick() async { hideKeyboard(Get.context!); final selectAddressMap = await CommonPointSelectAddressPage.start(); if (selectAddressMap == null || selectAddressMap.isEmpty) { return; } _selectedAddressMap.value = selectAddressMap; } void onPointSaveClick() { final title = titleController.text.trim(); if (title.isEmpty) { ToastUtil.show(StringName.commonPointAddNameHint); return; } final String address = selectedAddressMap?['address'] ?? ''; if (address.isEmpty) { ToastUtil.show(StringName.commonPointAddPleaseSelectAAddressHint); return; } if (guardStartTime == null || guardEndTime == null) { ToastUtil.show(StringName.commonPointAddGuardTimePeriodHint); return; } _isShowDuplicateName.value = false; CustomLoadingDialog.show(); // rangePointRepository.pointInfoCreate(title:); } }