我正在申请位置许可的应用程序上工作。
如果用户单击“拒绝”,则我正在导航用户到设置屏幕,以便他们可以手动打开位置。但是,当我从设置屏幕更改位置许可并单击返回并导航至应用程序空白屏幕时,我也无法检测到更改许可状态。
下面是代码:
import 'package:permission_handler/permission_handler.dart';
import 'package:flutter/widgets.dart';
class LocationScreenState extends State<LocationScreen> with WidgetsBindingObserver{
PermissionStatus _status;
@override
void initState() {
super.initState();
WidgetsBinding.instance
.addPostFrameCallback((_) => afterFirstLayout(context));
}
void afterFirstLayout(BuildContext context){
PermissionHandler().requestPermissions([PermissionGroup.locationAlways]).then(__onStatusRequested);
}
void __onStatusRequested(Map<PermissionGroup, PermissionStatus> statuses){
if(statuses != PermissionStatus.granted){
PermissionHandler().openAppSettings();
}else{
_status = PermissionStatus.granted;
}
}
最佳答案
这是我使用的代码。看看希望对您有帮助
void _askPermission() {
PermissionHandler().requestPermissions(
[PermissionGroup.locationWhenInUse]).then(_onStatusrequested);
}
void _onStatusrequested(Map<PermissionGroup, PermissionStatus> statuses) {
final status = statuses[PermissionGroup.locationWhenInUse];
if (status == PermissionStatus.neverAskAgain) {
// openSettingsDialog();
setState(() {
isPermissionIgnored = true;
});
_updateStatus(_status);
} else if (status == PermissionStatus.denied) {
setState(() {
isPermissionIgnored = false;
});
_updateStatus(status);
} else if (status == PermissionStatus.granted) {
setState(() {
isPermissionIgnored = false;
});
_updateStatus(status);
}
}
void _updateStatus(PermissionStatus status) {
if (status != _status) {
_status = status;
print(_status);
}
print(status);
}
关于flutter - 一旦应用程序从权限设置屏幕返回,Flutter应用程序中的空白屏幕,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60273256/