flutter中的文件列表

时间:2018-06-21 18:48:03

标签: dart flutter

我有图片,我想将它们加载到我的应用程序中。 my_app / lib / ...-这是我的源文件 my_app / assets / images / ...-这是我的图片

我需要获取资产/图像/中的文件列表,然后显示其中一些(根据其他逻辑) 我正在尝试

final dir = Directory("assets/images/");
print(dir.existsSync());    // <---- it also print: false
var files = dir.listSync().toList();
files.forEach((e) => list.add(MyImageItem(e.path)));

问题是:我收到例外情况

FileSystemException: Directory listing failed, path = 'assets/images/'
(OS Error: No such file or directory, errno = 2)

我尝试了不同的方式:素材资源/图片/,图片/,图片等 我的pubspec.yaml

flutter:
  assets:
    - assets/images/
    - assets/

直接创建图像时,一切都很好

new Image(image: AssetImage("assets/images/cat.png"))

我知道以前(一个月前)必须直接在pubspec.yaml中声明每个资源,但是现在asset / images /可以。 我可以通过直接路径加载文件。为什么我无法访问目录?如何从目录中获取文件列表以从我的代码中获取文件?

2 个答案:

答案 0 :(得分:2)

我在资产中保留一个json文件,该文件记录资产文件夹的文件树。

当需要文件列表时,我只是从json文件中读取。

这种json文件可以通过代码轻松生成。

但是,当您拥有5-10k张图像时,这不能直接解决您的问题。 只有一个json文件可能太大而无法读取。

图像应分组并记录在单独的json文件中。

答案 1 :(得分:1)

将文件添加到资产时,意味着您已经知道它们的路径。 将所有图像路径存储在列表中,并在需要时访问它们。

例如,如果您有3张图片

your_app / assets / images / image1.jpg
your_app / assets / images / image2.jpg
your_app / assets / images / image3.jpg

创建一个列表并将其存储为:

List<String> imagePaths = ['assets/images/image1.jpg', 'assets/images/image2.jpg', 'assets/images/image3.jpg'];

例如,如果要访问第一张图像,请使用

AssetImage(imagePaths[0])