import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
import 'package:permission_handler/permission_handler.dart';
import 'package:provider/provider.dart';
import 'package:toptongpin/app/common/widgets/dialog.dart';
import 'package:toptongpin/app/utils/log_util.dart';
import 'package:toptongpin/app/utils/toast_util.dart';
import '../res/colors.dart';
class Permissions {
static List<String> _names(BuildContext context) {
return <String>[
("日历"),
("相机"),
("联系人"),
("位置"),
'位置权限',
'位置权限',
'媒体资料库',
("麦克风"),
'phone',
("相册"),
("相册"),
'reminders',
'sensors',
'sms',
'speech',
("本地存储"),
'ignoreBatteryOptimizations',
'通知权限',
'access_media_location',
'activity_recognition',
'unknown',
'bluetooth',
'manageExternalStorage',
'systemAlertWindow',
'requestInstallPackages',
'appTrackingTransparency',
'criticalAlerts',
'accessNotificationPolicy',
'bluetoothScan',
'bluetoothAdvertise',
'bluetoothConnect',
];
}
static Future<bool> checkPermission(BuildContext context, int value,
{content = "", sub = ""}) async {
var permissionStatus = await Permission.byValue(value).request();
print("+++++++++++++++++" + permissionStatus.toString());
if (permissionStatus.isLimited || permissionStatus.isGranted) {
return true;
} else if (permissionStatus.isDenied) {
showPermissionConfirmDialog(context, value, content: content, sub: sub);
return false;
} else if (permissionStatus.isPermanentlyDenied) {
//权限永久拒绝,且不在提示,需要进入设置界面,IOS和Android不同
ToastUtil.error('请前往设置-权限设置中开启系统权限');
return false;
} else {
PermissionStatus permissionStatus = await Permission.byValue(value).request();
if (permissionStatus == PermissionStatus.granted ||
permissionStatus == PermissionStatus.limited) {
return true;
} else {
ToastUtil.error('请前往设置-权限设置中开启系统权限');
return false;
}
}
}
static Future<bool> check(
int value,
) async {
PermissionStatus permissionStatus = await Permission.byValue(value).status;
if (permissionStatus == PermissionStatus.granted ||
permissionStatus == PermissionStatus.limited) {
return true;
} else {
return false;
}
}
static Future<bool> openSettings() {
return openAppSettings();
}
static Future<dynamic> showPermissionConfirmDialog(
BuildContext context, value,
{content = "", sub = ""}) {
final yoursItem = _names(context)[value];
return showTipDialog(
context: Get.context,
content: content == "" ? "xx”想访问您的$yoursItem" : content,
sub: sub == "" ? "" : sub,
width: 592.w,
fn1Text: "取消",
fn2Text: "确定",
fn1: () {
Get.back();
},
fn2: () {
Get.back();
openAppSettings();
},
height: 392.w);
}
}
flutter权限
最新推荐文章于 2025-03-03 19:04:22 发布