【问题标题】:Flutter: How to get a list of names of all images in 'assets' directory?Flutter:如何获取“资产”目录中所有图像的名称列表?
【发布时间】:2019-10-25 21:43:48
【问题描述】:

我需要在列表中显示 100 张图像。我不想硬编码所有的名字。

如何获取图片的名称?

我想要这样的代码:

final List<String> imageNames = await WhatEver.getNamesOfImagesInAssetsDirectory();
final widgets = imageNames.map((fileName) => Image.asset('images/${fileName}.png')).toList()

【问题讨论】:

标签: flutter dart


【解决方案1】:

我已经在StatefulWidget 中实现了下面的函数

    Future _initImages() async {
      // >> To get paths you need these 2 lines
      final manifestContent = await rootBundle.loadString('AssetManifest.json');
    
      final Map<String, dynamic> manifestMap = json.decode(manifestContent);
      // >> To get paths you need these 2 lines

      final imagePaths = manifestMap.keys
          .where((String key) => key.contains('images/'))
          .where((String key) => key.contains('.svg'))
          .toList();
    
      setState(() {
        someImages = imagePaths;
      });
    }

AssetManifest.json 包含有关您在pubspec.yaml 中添加的所有资产的所有数据

【讨论】:

  • 如果您想在没有BuildContext 的地方执行此操作,也可以使用final manifestContent = await rootBundle.loadString('AssetManifest.json'); 而不是DefaultAssetBundle
  • 如何读取和打印从资产到控制台的图像路径,例如``` assets/image.jpg assets/image2.jpg ```
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-30
  • 2011-12-08
相关资源
最近更新 更多