Flutter 从权限设置屏幕返回一次颤振应用程序中的空白屏幕

Flutter 从权限设置屏幕返回一次颤振应用程序中的空白屏幕,flutter,dart,Flutter,Dart,我正在开发一个申请位置许可的应用程序。 如果用户单击“拒绝”,我将用户导航到设置屏幕,以便他们可以手动打开该位置。但是,当我从设置屏幕更改位置权限并单击“上一步”并导航到应用程序时,会出现空白屏幕,而且我无法检测更改权限状态。 代码如下: import 'package:permission_handler/permission_handler.dart'; import 'package:flutter/widgets.dart'; class LocationScreenStat

我正在开发一个申请位置许可的应用程序。 如果用户单击“拒绝”,我将用户导航到设置屏幕,以便他们可以手动打开该位置。但是,当我从设置屏幕更改位置权限并单击“上一步”并导航到应用程序时,会出现空白屏幕,而且我无法检测更改权限状态。 代码如下:

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

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

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

你在应用程序上使用后退按钮物理后退箭头?正当当你们点击后退按钮时,它将弹出当前屏幕,若堆栈上并没有任何内容,那个么应用程序将显示空白屏幕。你们在应用程序上使用后退按钮物理后退箭头?正当当你们点击后退按钮,它将弹出当前屏幕,若堆栈上并没有任何内容,那个么应用程序将显示空白屏幕。