| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- import 'package:flutter/cupertino.dart';
- import 'package:flutter_contacts/flutter_contacts.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/consts/error_code.dart';
- import 'package:location/data/repositories/urgent_contact_repository.dart';
- import 'package:location/handler/error_handler.dart';
- import 'package:location/utils/common_expand.dart';
- import 'package:location/utils/http_handler.dart';
- import 'package:permission_handler/permission_handler.dart';
- import '../../../dialog/common_confirm_dialog_impl.dart';
- import '../../../resource/string.gen.dart';
- import '../../../utils/de_bounce.dart';
- import '../../../utils/permission_util.dart';
- import '../../../utils/toast_util.dart';
- @injectable
- class AddUrgentContactController extends BaseController {
- final RxString _contactPhone = RxString("");
- final TextEditingController etController = TextEditingController();
- String get contactPhone => _contactPhone.value;
- final Debounce _debounce = Debounce(debounceTime: 500);
- final UrgentContactRepository urgentContactRepository;
- AddUrgentContactController(this.urgentContactRepository);
- @override
- void onReady() {
- etController.addListener(() {
- _contactPhone.value = etController.text;
- });
- }
- void back() {
- Get.back();
- }
- void onSelectContactClick() async {
- bool isGranted = await PermissionUtil.checkPermission(Permission.contacts);
- if (!isGranted) {
- requestContactsPermissionDialog(onConfirm: () async {
- isGranted = await PermissionUtil.requestPermission(Permission.contacts);
- if (isGranted) {
- _goContact();
- } else {
- ToastUtil.show(StringName.permissionRequestFail);
- }
- });
- } else {
- _goContact();
- }
- }
- void _goContact() async {
- final contact = await FlutterContacts.openExternalPick();
- if (contact != null) {
- final phones = contact.phones;
- if (phones.isNotEmpty) {
- etController.text = phones.first.number.trimAll();
- }
- }
- }
- @override
- void onClose() {
- super.onClose();
- etController.dispose();
- }
- void onAddClick() {
- if (contactPhone.length < 11) {
- return;
- }
- _debounce.onClick(() {
- urgentContactRepository.addContact(contactPhone).then((_) {
- ToastUtil.show(StringName.urgentContactAddSuccess);
- Get.back(result: true);
- }).catchError((e) {
- if (e is ServerErrorException) {
- if (e.code == ErrorCode.contactAlreadyAdded) {
- ToastUtil.show(StringName.urgentContactHasBeenAdded);
- } else {
- ErrorHandler.toastError(e);
- }
- } else {
- ErrorHandler.toastError(e);
- }
- });
- });
- }
- }
|