未为类定义方法"权限处理程序"



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";
}

最新更新