[Solved] Flutter: How to get a list of names of all images in 'assets' directory?

Question

Asked by Kostya V on June 11, 2019 (source).

I have 100 images that I need to display in a list. I don't want to hard code all names.

How can I get the names of the images?

I want to have code like this:

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

Answer

Question answered by Kostya V (source).

I've implemented the function below inside of a 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 contains all data about all assets that you add in pubspec.yaml

DART FLUTTER
SHARE: