更改设置后如何检测应用已重新打开?

时间:2019-01-14 09:38:12

标签: permissions flutter settings

我正在使用simple permissions plugin来请求我的flutter应用程序中的联系人权限。

当用户按下“不再询问”选项并拒绝该权限时,我给出一个按钮,该按钮使用openSettings()打开设置。 现在,如果用户启用了权限并按回去出现在应用程序上,我如何检测到已授予该权限?

这里有一些代码可以给出想法-

Text(
  'Permission to access Contacts was denied.\nPlease press Settings to provide permissions and continue connecting!',
),
MaterialButton(
  onPressed: () {
    SimplePermissions.openSettings();
  },
  child: Text('Settings'),
)

1 个答案:

答案 0 :(得分:1)

您可以使用WidgetsBindingObserver class。它允许您检测窗口小部件的生命周期。 扩展当前状态with WidgetsBindingObserver,并将这些行添加到您的initState中。

WidgetsBinding.instance.addObserver(this); //this sets WidgetsBindingObserver
requestPermission(); //this will request the permission on initial load.

将以下几行添加到您的状态。

@override
void didChangeAppLifecycleState(AppLifecycleState state) {
  checkPermission(); //this will check the status of permission when the user returns back from the settings page.
}


checkPermission() async {
  bool res = await SimplePermissions.checkPermission(Permission.Camera);
  if (!res) {
    setState(() {
      _statusMessage = "waiting for camera permission";
    });
  } else {
    setState(() {
      _statusMessage = "camera permission has been granted";
    });
  }
}

检查完整的示例代码here