contant_utils.dart 2.75 KB


import 'package:flutter/material.dart';
import 'package:flutter_native_contact_picker/flutter_native_contact_picker.dart';
import 'package:flutter_native_contact_picker/model/contact.dart';
import 'package:one_key/utils/dialog_util.dart';
import 'package:one_key/utils/misc.dart';
import 'package:permission_handler/permission_handler.dart';

class ContantUtils {
  static openAddressBook(BuildContext context, {VoidCallback? callback}) async {
    if (!(await checkContactPermission())) {
      PermissionStatus permissionStatus = await contactPermissionStatus();
      if (permissionStatus == PermissionStatus.permanentlyDenied) {
        //用户选择不在弹出权限提示框
        print('never');
        DialogUtil.openAlertDialog(
            context, '未获得通讯录权限', "请在手机的权限管理里,将通讯录权限开启", '去设置', 340.0,
            onTap: () {
          openSetting();
          if (Navigator.canPop(context)) {
            Navigator.pop(context, '');
          }
        });
      } else {
        // 申请权限
        bool canContacts = await requestContactPermission();
        if (canContacts) {
          if (callback != null) {
            callback();
          }
        } else {
          //拒绝通讯录权限 , 苹果拒绝权限后,不再提示权限框,进入此处
          DialogUtil.openAlertDialog(
              context, '未获得通讯录权限', "请在手机的权限管理里,将通讯录权限开启。", '去设置', 340.0,
              onTap: () {
            openSetting();
            if (Navigator.canPop(context)) {
              Navigator.pop(context, '');
            }
          });
        }
      }
    } else {
      if (callback != null) {
        callback();
      }
    }
  }

  static Future<ContantsModelMy?> getContactData() async {
    final FlutterNativeContactPicker contactPicker =
        FlutterNativeContactPicker();
    Contact? contact = await contactPicker.selectContact();
    if (contact != null) {
      String? fullName =
          contact.fullName?.replaceAll(new RegExp(r"\s+\b|\b\s"), "") ?? '';
      // String? phone =
      //     contact.selectedPhoneNumber?.replaceAll(new RegExp(r"\s+\b|\b\s"), "");
      // if (fullName.compareTo(phone) == 0) {
      //   fullName = '';
      // } else {
      //   fullName = contact.fullName!;
      // }
      String phoneNumber = contact.phoneNumbers?.first
              .replaceAll(new RegExp(r"\s+"), "")
              .replaceAll(' ', '') ??
          '';

      ContantsModelMy contantsModelMy = ContantsModelMy();
      contantsModelMy.fullName = fullName;
      contantsModelMy.phoneNumber = phoneNumber;

      return contantsModelMy;
    }

    return null;
  }
}

class ContantsModelMy {
  String? fullName;
  String? phoneNumber;
}