Flutter FileSystemException:操作系统错误:Google Pixel 3中的权限被拒绝

Flutter FileSystemException:操作系统错误:Google Pixel 3中的权限被拒绝,flutter,google-pixel,Flutter,Google Pixel,我在尝试获取文件树时遇到此错误 我正在我的项目中使用这些插件: 路径提供程序:^0.5.0+1 简单权限:^0.1.9 import'package:path_provider/path_provider.dart'; 导入“package:simple_permissions/simple_permissions.dart”; ... 静态未来获取本地路径异步{ 最终目录=等待getApplicationDocumentsDirectory(); 返回directory.path; } 最终列

我在尝试获取文件树时遇到此错误

我正在我的项目中使用这些插件:

路径提供程序:^0.5.0+1

简单权限:^0.1.9

import'package:path_provider/path_provider.dart';
导入“package:simple_permissions/simple_permissions.dart”;
...
静态未来获取本地路径异步{
最终目录=等待getApplicationDocumentsDirectory();
返回directory.path;
}
最终列表文件=列表();
目录父目录;
@凌驾
小部件构建(构建上下文){
如果(父项==null){
简单许可
.requestPermission(Permission.WriteExternalStorage)
.然后((值){
if(值==PermissionStatus.authorized){
然后((字符串值){
Directory dir=目录(值);
while(dir.path!=dir.parent.path){
dir=dir.parent;
}
父=dir;
设置状态(){
files.addAll(dir.listSync());
sortFiles();
});
});
}否则{
SimplePermissions.openSettings();
}
});
}
返回脚手架(…)
}
它在Nexus5上运行完全正常,但在Pixel3上出现了一个错误

[错误:flatter/lib/ui/ui_dart_state.cc(148)]未处理的异常:FileSystemException:目录列表失败,路径='/'(操作系统错误:权限被拒绝,错误号=13)

dir.listSync()产生的错误

有人知道如何解决这个问题吗?

dir.listSync()
可以返回异常,因此您必须检查每个父目录是否可用于获取其中的文件

dir.listSync()
可以返回异常,因此您必须检查每个父目录是否可用于获取其中的文件

import 'package:path_provider/path_provider.dart';
import 'package:simple_permissions/simple_permissions.dart';

...

static Future<String> get localPath async {
  final directory = await getApplicationDocumentsDirectory();
  return directory.path;
}

final List<FileSystemEntity> files = List<FileSystemEntity>();
Directory parent;

@override
Widget build(BuildContext context) {
  if (parent == null) {
    SimplePermissions
        .requestPermission(Permission.WriteExternalStorage)
        .then((value) {
      if (value == PermissionStatus.authorized) {
        localPath.then((String value) {
          Directory dir = Directory(value);
          while (dir.path != dir.parent.path) {
            dir = dir.parent;
          }
          parent = dir;
          setState(() {
            files.addAll(dir.listSync());
            sortFiles();
          });
        });
      } else {
        SimplePermissions.openSettings();
      }
    });
  }
  return Scaffold(...)
}