Flutterで権限許可のためアプリ設定画面を開く方法

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();
                },
              ),
            ],
          );
        });
  }