无法在 ApplicationDocumentsDirectory 中列出图像文件,即使我可以加载/显示它们

Unable to list image files in the ApplicationDocumentsDirectory even though I can load/display them

提问人:bnnrs 提问时间:10/27/2022 更新时间:10/27/2022 访问量:222

问:

我正在尝试使用和 from 获取应用程序文档目录中的文件列表。虽然我可以从这个目录加载图像文件并使用 flutter 的功能查看它们,但我在目录列表中看不到我的应用程序生成的任何图像/jpg 文件。我还尝试使用相同的结果加载文件。path_providergetApplicationDocumentsDirectory()Directory(appFolder).listSync()dart:ioImage.fileFile(imagePath)

我不明白为什么在运行时可以成功查找、加载和显示图像文件。对于额外的上下文 - 这些文件是使用 flutter 包生成的。到目前为止,我在 Android 上看到了这个(尚未在 iOS 上测试)。Image.File(imagePath)File(imagePath)OS Error: No such file or directorycamera

代码预览

在这两种情况下获取 appFolder 的代码

import 'package:provider/provider.dart';

final dbFolder = await getApplicationDocumentsDirectory();

用于显示图像的代码

import 'package:flutter/material.dart';

// just the relevant code to display the image
Center(
  child: Image.file(Platform.isIOS
     ? File(appFolder + '/' + imagePath)
     : File(appFolder + imagePath)),
),

用于列出文件夹中文件的代码

  import 'dart:io';

  void _getDirectoryList() async {
    fileList = Directory(appFolder).listSync(followLinks: true);
    final List<FileSystemEntity> entities =
        await Directory(appFolder).list().toList();
    entities.forEach(print);
  }

我这样做是为了创建应用程序数据库和用户生成的图像文件的存档,但卡住了在 .ApplicationDocumentsDirectory

任何帮助或指示将不胜感激!

Android Flutter Image IO 路径提供程序

评论


答:

0赞 returnVoid 10/27/2022 #1

看看 entities.forEach 中的“print”是做什么的。如果您尝试打印要使用 debugPrint(item) 的文件的名称

void _getDirectoryList() async {
  fileList = 
    Directory(appFolder).listSync(followLinks: true);
    final List<FileSystemEntity> entities =
      await Directory(appFolder).list().toList();
    entities.forEach((item) => debugPrint(item.toString());
}

查看 debugPrintforEach 以了解有关问题所在的更多信息。