【问题标题】:Exception when listing created sub-directory in documents directory在文档目录中列出创建的子目录时出现异常
【发布时间】:2018-09-15 12:50:58
【问题描述】:

我正在使用官方 API 来列出我为某种目的创建的目录,并将一些文件推送到其中。现在我想把它们列出来。

这是我首先创建的方式

final Directory extDir = await getApplicationDocumentsDirectory();
//    final String dirPath = '${extDir.path}/Movies/flutter_test';
final String dirPath = '${extDir.path}/mydir';
await new Directory(dirPath).create(recursive: true);

这是我在不同页面中阅读的内容。

final Directory extDir = await getApplicationDocumentsDirectory();
//    final String dirPath = '${extDir.path}/Pictures/flutter_test';
final String dirPath = '${extDir.path}/mydir';
final String thumbDirPath = '$dirPath/thumbs';
final Directory imgDir = Directory.fromUri(Uri.file(dirPath));

dirExists = imgDir.existsSync();
fileCount = 0;
if(dirExists) {
  print("my dir exists");

//      thumbDir.list(recursive: false, followLinks: false)
  fileCount = await imgDir.list(recursive: false).length;
  print('mydir images count $fileCount');
  if(fileCount > 1) { // we think one is always the directory itself?
    try {
      imgDir.list(recursive: false, followLinks: false)
          .listen((FileSystemEntity entity) {

代码在此处中断并给出以下异常消息

type '() => Null' is not a subtype of type '(Object) => FutureOr<dynamic>'

我还必须告诉您,当我列出外部存储目录时,这不会发生。创建目录时我做错了吗?

编辑

我现在已经在我的 Mac 上将 Flutter 升级到了 0.7.3,但又遇到了一个新问题。应用程序根本不会运行。

【问题讨论】:

  • 您在哪一行收到此错误
  • @DineshBalasubramanian 我提到了它在哪里坏了。
  • 你用的是什么 Flutter 版本?
  • @GünterZöchbauer beta 0.5.1。在 Mac osx 10.13.6

标签: file-io io dart directory flutter


【解决方案1】:

好的,我自己找到了解决方案。显然,修改大型提供程序 API 给了我列出项目的不同方式,这实际上告诉我我试图运行两次侦听器。

fileCount = await imgDir.list(recursive: false).length;

imgDir.list(recursive: false, followLinks: false)
      .listen((FileSystemEntity entity) {

原始代码不能一个接一个地编写,因为第一个完成侦听器。我通过更改自己的代码并以这种方式列出目录来发现这一点。

Stream<FileSystemEntity> files = imgDir.list(recursive: false, followLinks: false);

将根据 API 添加尽可能多的事件。然后创建一个常规的通用列表

List<FileSystemEntity> entities = await files.toList();

然后你使用迭代器或 for() 循环来执行通常的迭代

for(FileSystemEntity entity in entities) {
... // every file now is available

【讨论】:

    猜你喜欢
    • 2018-09-03
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    • 2011-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-14
    相关资源
    最近更新 更多