Reputation: 417
how to solve PermissionHandler
error in flutter?
Error is:
the method PermissionHandler isn't defined for the type '_AccessContactState'.
import 'package:contacts_service/contacts_service.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:permission_handler/permission_handler.dart';
class AccessContacts extends StatefulWidget {
@override
_AccessContactsState createState() => _AccessContactsState();
}
class _AccessContactsState extends State<AccessContacts> {
Iterable<Contact> _contacts;
@override
void initState() {
super.initState();
}
getContacts() async {
PermissionStatus permissionStatus = await _getPermission();
if (permissionStatus == PermissionStatus.granted) {
var contacts = await ContactsService.getContacts();
setState(() {
_contacts = contacts;
});
} else {
throw PlatformException(
code: 'PERMISSION_DENIED',
message: 'Access to location data denied',
details: null,
);
}
}
Future<PermissionStatus> _getPermission() async {
PermissionStatus permission = await PermissionHandler()
.checkPermissionStatus(PermissionGroup.contacts);
if (permission != PermissionStatus.granted &&
permission != PermissionStatus.denied) {
Map<PermissionGroup, PermissionStatus> permisionStatus =
await PermissionHandler()
.requestPermissions([PermissionGroup.contacts]);
return permisionStatus[PermissionGroup.contacts] ??
PermissionStatus.unknown;
} else {
return permission;
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('Access Contacts example')),
body: _contacts != null
? ListView.builder(
itemCount: _contacts?.length ?? 0,
itemBuilder: (context, index) {
Contact c = _contacts?.elementAt(index);
return ListTile(
leading: (c.avatar != null && c.avatar.length > 0)
? CircleAvatar(
backgroundImage: MemoryImage(c.avatar),
)
: CircleAvatar(child: Text(c.initials())),
title: Text(c.displayName ?? ''),
);
},
)
: CircularProgressIndicator(),
);
}
}`
How to solve PermissionHandler
error in flutter?
Upvotes: 2
Views: 4503
Reputation: 171
Change your code:
await PermissionHandler().checkPermissionStatus(PermissionGroup.contacts);
To this:
await Permission.contacts.status
Change this code also:
await PermissionHandler().requestPermissions([PermissionGroup.contacts]);
To this:
await Permission.contacts.request
Change all of the PermissionGroup
words to Permission
, take out the Group
word.
Upvotes: 1
Reputation: 54367
Your code is build with permission_handler: 4.4.0
In pubspec.yaml
, please specify permission_handler: 4.4.0
dependencies:
flutter:
sdk: flutter
contacts_service: any
permission_handler: 4.4.0
Upvotes: 3