Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

List of files in flutter

Tags:

flutter

dart

I have images and I want to load them to my appplication. my_app/lib/... - here my source files my_app/assets/images/... - here my images

I need to get list of files in assets/images/ and after that show some of them (according to other logic) I'm trying this

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)));

The problem is: I recieve exception

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

I've tried different ways: assets/images/, images/, images and so on My pubspec.yaml

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

When I create Image directly all is fine

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

I knew that previously (month ago) each resource has to be declared in pubspec.yaml directly, but now assets/images/ is ok. I can load file by direct path. Why I can't access a directory? How to get list of files in directory to get them from my code?

like image 615
Serge Breusov Avatar asked Jun 21 '18 18:06

Serge Breusov


People also ask

How do I list files in flutter?

To list all the files or folders, you have to use flutter_file_manager, path, and path_provider_ex flutter package. Add the following lines in your pubspec. yaml file to add this package in your dependency. Add read / write permissions in your android/app/src/main/AndroidManifest.

How do I get all the files in a directory Dart?

How to list the contents of a directory in Dart. final dir = Directory('path/to/directory'); final List<FileSystemEntity> entities = await dir. list(). toList();

How do I read all files in a directory in flutter?

To List all files in directory from internal storage first we will fetch all the files and folder by using below code and then pass this data to GridView. builder() to show the files. To delete file/folder we will use the below code.


2 Answers

When you add files to your assets, it means that you already know their paths. Store all the images paths in a list and access them whenever you need.

For example if you have 3 images in

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

create a list and store all of them like:

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

and for example if you want to access your first image, use

AssetImage(imagePaths[0])

like image 200
Javid Noutash Avatar answered Sep 30 '22 20:09

Javid Noutash


I keep a json file inside assets which records the file tree of assets folder.

When file list is needed, I just read from the json file.

Such json file can be easily generated by code.

However, this does not solve your problem directly when u have 5-10k images. Only one json file might be too large to read.

Images should be grouped and recorded in separated json files.

like image 23
thundertrick Avatar answered Sep 30 '22 18:09

thundertrick