我正在使用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'),
)
答案 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。