misc.dart 3.27 KB
import 'dart:io';

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:one_key/utils/dialog_util.dart';
import 'package:permission_handler/permission_handler.dart';

import '../app.dart';

Future<bool> checkPermissionStorage() async {
  var status = await Permission.storage.status;
  if (!status.isGranted) {
    status = await Permission.storage.request();
    if (status.isGranted) {
      return true;
    }
  } else {
    return true;
  }
  return false;
}

Future<bool> checkContactPermission() async {
  PermissionStatus permissionStatus = await Permission.contacts.status;
  if (permissionStatus == PermissionStatus.granted) {
    return true;
  } else {
    return false;
  }
}

Future<bool> checkPermission(Permission permissionGroup) async {
  PermissionStatus permissionStatus = await permissionGroup.status;
  if (permissionStatus == PermissionStatus.granted) {
    return true;
  } else {
    return false;
  }
}

Future<bool> requestPermission(Permission permissionGroup) async {
  //全局提示权限使用目的
  if (Platform.isAndroid) {
    //全局提示权限使用目的
    BuildContext context = App.navigatorKey.currentState.overlay.context;
    if (permissionGroup == Permission.storage) {
      DialogUtil.showAuthorityDestination(
          context, 'h_storage', '存储权限使用说明', '用于读取相册照片上传店铺门头照,包间照片等。');
    } else if (permissionGroup == Permission.camera) {
      DialogUtil.showAuthorityDestination(
          context, 'h_camera', '相机权限使用说明', '用于上传店铺门头照,包间照片等。');
    } else if (permissionGroup == Permission.location) {
      DialogUtil.showAuthorityDestination(
          context, 'h_location', '位置权限使用说明', '用于创建店铺时,获取店铺在地图上的位置,方便客户导航到咱们店铺');
    }
  }

  final permissions = await [permissionGroup].request();
  if (await permissionGroup.request().isGranted) {
    print(true);
    // Either the permission was already granted before or the user just granted it.
  }

  if (permissions[permissionGroup] == PermissionStatus.granted) {
    return true;
  } else {
    return false;
  }
}

Future<PermissionStatus> permissionStatus(Permission permissionGroup) async {
  PermissionStatus permissionStatus = await permissionGroup.status;
  return permissionStatus;
}

Future<PermissionStatus> contactPermissionStatus() async {
  PermissionStatus permissionStatus = await Permission.contacts.status;
  return permissionStatus;
}

Future<bool> requestContactPermission() async {
  if (Platform.isAndroid) {
    PermissionStatus permissionStatus = await Permission.contacts.status;

    if (permissionStatus != PermissionStatus.permanentlyDenied) {
//全局提示权限使用目的
      BuildContext context = App.navigatorKey.currentState.overlay.context;
      DialogUtil.showAuthorityDestination(
          context, 'h_contant', '通讯录权限使用说明', '直接从通讯录获得客户电话号码,快速录入预订信息。');
    }
  }
  final permissions = await [Permission.contacts].request();
  if (permissions[Permission.contacts] == PermissionStatus.granted) {
    return true;
  } else {
    return false;
  }
}

Future<bool> openSetting() {
  return openAppSettings();
}