Flutter应用程序从权限设置屏幕返回后出现空白屏幕

5

我正在开发一个应用,需要请求用户的位置权限。 如果用户点击拒绝,我会将他们引导到设置界面,让他们手动打开位置权限。但是当我在设置界面更改了位置权限并返回到应用时,会出现空白屏幕,并且我无法检测到权限状态的更改。 以下是代码:

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;

    }
  }

1
你在应用程序中使用返回按钮物理后退箭头,对吧?当你点击返回按钮时,它会弹出当前屏幕,如果堆栈中没有任何内容,则应用程序将显示空白屏幕。 - Vrushi Patel
1个回答

0

这是我使用的代码。看一下希望能有所帮助。

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);
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接