在文档目录中列出创建的子目录时发生异常

时间:2018-09-15 12:50:59

标签: file-io io dart directory flutter

我正在使用官方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,并且完全有一个新问题。该应用程序根本无法运行。

1 个答案:

答案 0 :(得分:0)

好的,我自己找到了解决方案。显然,修改大型提供程序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