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

Viewed 12883

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()
1 Answers

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

Related