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

时间:2019-03-28 14:04:32

标签: flutter google-pixel

尝试获取文件树时出现此错误

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

  

path_provider:^ 0.5.0 + 1

     

简单权限:^ 0.1.9

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(...)
}

它在Nexus 5上可以正常使用,但在Pixel 3上却出现错误

  

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

dir.listSync()产生的错误

有人知道如何解决吗?

1 个答案:

答案 0 :(得分:0)

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