将PermissionHandler
升级到最新版本(5.0.0(后。未找到PermissionHandler()
The name 'PermissionGroup' isn't a type so it can't be used as a type argument.
。
下面是一个代码片段:
PermissionStatus permission = await PermissionHandler().checkPermissionStatus(PermissionGroup.storage);
if (permission != PermissionStatus.granted && permission != PermissionStatus.neverAskAgain) {
Map<PermissionGroup, PermissionStatus> permissions = await PermissionHandler().requestPermissions([PermissionGroup.storage]);
if (permissions.containsValue(2))
fileDownload(context, finalUrl);
}
问题出在哪里?
这是因为作者BaseFlow从permission_handler: ^5.0.0
中使我们更直观地使用如本期股票代码(#230(中所述。
您的代码片段需要更改如下:
if (await Permission.storage.request().isGranted) {
fileDownload(context, finalUrl);
}
所以现在那些像这样映射的:
old way new way
------- -------
await PermissionHandler()
.checkPermissionStatus(PermissionGroup.camera) await PermissionGroup.camera.status
await PermissionHandler().requestPermissions(
[PermissionGroup.camera]))[PermissionGroup.camera] await PermissionGroup.camera.request()
await PermissionHandler().requestPermissions(
[PermissionGroup.camera, PermissionGroup.storage])) await [PermissionGroup.camera, PermissionGroup.storage].request()
await PermissionHandler().checkServiceStatus
(PermissionGroup.location) await Permission.location.serviceStatus.isEnabled
点击此处阅读更多:本期股票代码(#230(。
使用permission_handler:^3.0.0,它对我的有效
那些仍在挣扎的人,请按照的指示
处理权限的最新版本现在是
permission_handler:^5.0.0+修补程序.8
现在我认为他们已经改变了用法。
用例:为了将联系人保存在电话簿中,我必须授予check联系人权限。所以这对我来说非常合适。
Future<void> saveContactInPhone() async {
try {
print("saving Conatct");
PermissionStatus permission = await Permission.contacts.status;
if (permission != PermissionStatus.granted) {
await Permission.contacts.request();
PermissionStatus permission = await Permission.contacts.status;
if (permission == PermissionStatus.granted) {
Contact newContact = new Contact();
newContact.givenName ="Ajay";
newContact.familyName ="abc";
newContact.phones = [Item(label: "mobile",value: "9998887771")];
await ContactsService.addContact(newContact);
} else {
//_handleInvalidPermissions(context);
}
} else {
Contact newContact = new Contact();
newContact.givenName ="Ajay";
newContact.familyName ="abc";
newContact.phones = [Item(label: "mobile",value: "9998887771")];
await ContactsService.addContact(newContact);
}
print("object");
} catch (e) {
print(e);
}
}
有关的更多信息,请参阅Permission_handler_example
请遵守以下配置
pubspec.yaml
permission_handler: ^6.1.1
进口
import 'package:permission_handler/permission_handler.dart';
检查权限,如
if (await Permission.storage.request().isGranted) {
String dir = (await getExternalStorageDirectory()).absolute.path + "/documents";
}