Как запросить несколько разрешений у пользователя во флаттере?Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Как запросить несколько разрешений у пользователя во флаттере?

Сообщение Anonymous »

Мне задали разрешение от пользователя во время выполнения, но мне нужно запросить НЕСКОЛЬКО разрешений, например, для телефона, контакта, SMS и т. д., поэтому я застрял на том, как вызывать этот метод один за другим, есть ли способ спросить после одно разрешение завершило открытие другого всплывающего окна?

Код: Выделить всё

      import 'package:permission_handler/permission_handler.dart';

class PermissionService{
final PermissionHandler _permissionHandler = PermissionHandler();

Future _requestPermissionContact(PermissionGroup permission) async {
var result = await _permissionHandler.requestPermissions([permission]);
if (result[PermissionGroup.contacts] == PermissionStatus.granted) {
print("sfhalsjfhas fasdhufaiusfh aloifahdf oalsifu");
}

}

Future requestContactPermission({Function onPermissionDenied}) async {
var granted = await _requestPermissionContact(PermissionGroup.contacts);
if (!granted) {
onPermissionDenied();
}
return granted;
}

Future hasContactPermission() async {
return hasPermission(PermissionGroup.contacts);
}

Future _requestPermissionSms(PermissionGroup permission) async {
var result = await _permissionHandler.requestPermissions([permission]);
if (result[permission] == PermissionStatus.granted) {
print("sfhalsjfhas fasdhufaiusfh aloifahdf oalsifu");
return true;
}
return false;
}

Future requestSmsPermission({Function onPermissionDenied}) async {
var granted = await _requestPermissionSms(PermissionGroup.sms);
if (!granted) {
onPermissionDenied();
}
return granted;
}

Future hasSmsPermission() async {
_requestPermissionPhone(PermissionGroup.phone);
return hasPermission(PermissionGroup.sms);
}

Future _requestPermissionPhone(PermissionGroup permission) async {
var result = await _permissionHandler.requestPermissions([permission]);
if (result[permission] == PermissionStatus.granted) {
return true;
}
return false;
}

Future requestPhonePermission({Function onPermissionDenied}) async {
var granted = await _requestPermissionPhone(PermissionGroup.phone);
if (!granted) {
onPermissionDenied();
}
return granted;
}

Future hasPhonePermission() async {
return hasPermission(PermissionGroup.phone);
}

Future hasPermission(PermissionGroup permission) async {
var permissionStatus =
await _permissionHandler.checkPermissionStatus(permission);
return permissionStatus == PermissionStatus.granted;
}
}
это мой класс разрешений, я хочу назвать эти три разрешения, и в initState меня называли так

Код: Выделить всё

    @override
initState() {

permissionAcess();
permissionAcessSms();
permissionAcessPhone();

super.initState();
}

Future permissionAcess() {
PermissionService().requestContactPermission(onPermissionDenied: () {
print('Permission has been denied');
});
}

Future permissionAcessSms() {
PermissionService().requestSmsPermission(onPermissionDenied: () {
print('Permission has been denied');
});
}

Future permissionAcessPhone() {
PermissionService().requestPhonePermission(onPermissionDenied: () {
print('Permission has been denied');
});
}
но оно вызывает только одно разрешение, так как же вызвать все эти три разрешения во время выполнения?

Подробнее здесь: https://stackoverflow.com/questions/611 ... in-flutter
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»