Flutterで権限許可のため設定画面を開く方法です。
permission_handlerパッケージを利用します。
インストール
pubspec.yaml:
dependencies:
permission_handler: ^5.0.1+1
$ flutter pub get
設定画面を開く
以下ではカメラの権限がない場合に設定画面を求めている例です。
import 'package:permission_handler/permission_handler.dart';
//省略
if (await Permission.camera.isPermanentlyDenied) {
openAppSettings(); //設定画面を開く
}
ダイアログでメッセージを表示してから設定画面に遷移するパターン
いきなり設定画面にいくと不自然なので、まず何の権限が必要なのかをダイアログに表示して、ユーザーの意思によって設定画面に遷移するようにします。
import 'package:permission_handler/permission_handler.dart';
// 省略
if (await Permission.camera.isPermanentlyDenied) {
showRequestPermissionDialog(context);
}
//省略
void showRequestPermissionDialog(BuildContext context) async {
await showDialog(
context: context,
builder: (context) {
return AlertDialog(
title: Text('カメラを利用する許可が必要です。'),
content: Text("バーコードを読み取るためにカメラを利用します。"),
actions: <Widget>[
FlatButton(
child: Text("キャンセル"),
onPressed: () => Navigator.pop(context),
),
FlatButton(
child: Text("設定"),
onPressed: () async {
openAppSettings();
},
),
],
);
});
}