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