cómo crear un directorio en flutter

Resuelto Ujang Karnadi asked hace 5 años • 4 respuestas

Quiero descargar imágenes y guardarlas en un nombre de directorio único usando dio y path_provider.pero tengo un error:

I/flutter (15977): FileSystemException: Cannot open file, 
path = '/data/user/0/com.manga.indonesia.manga.suka/app_flutter/sensei-wa-koi-o-oshie-rarenai-chapter-7-bahasa-indonesia/0.jpg'

¿ Cómo puedo hacer este sensei-wa-koi-o-oshie-rarenai-chapter-7-bahasa-indonesiadirectorio?

Mi código :

downloadChapter(chapter) async {
    Response res;
    Dio dio = new Dio();
    var dir = await getApplicationDocumentsDirectory();
    try {
      res = await dio
          .get('http://0.0.0.0:8080/api/MangaSuka/kchapters/' + chapter);

      var contentChapter = res.data['content'].where((a) {
        return a != null;
      }).toList();
      for (var i = 0; i < contentChapter.length; i++) {
        await dio.download(contentChapter[i], "${dir.path}/${chapter}/$i.jpg",
            onProgress: (rec, total) {
          print("Rec: $rec , Total: $total");
        });
      };
      return print(contentChapter);
    } catch (e) {
      return print(e);
    }
  }
Ujang Karnadi avatar Jan 29 '19 17:01 Ujang Karnadi
Aceptado

Está bien explicado en la documentación de Flutter :

import 'dart:io';

void main() {
  new Directory('sensei-wa-koi-o-oshie-rarenai-chapter-7-bahasa-indonesia').create()
    // The created directory is returned as a Future.
    .then((Directory directory) {
      print(directory.path);
  });
}

Sin embargo, en muchas situaciones, como la creación de un directorio, quizás la versión asíncrona (predeterminada) de Directory.create no ahorre tiempo y quizás pueda generar una condición de carrera. En ese caso, sería más apropiado usar la versión sincronizada del comando:

new Directory('sensei-wa-koi-o-oshie-rarenai-chapter-7-bahasa-indonesia').createSync()
// ... following sequential code

Es de destacar que muchos métodos dart::io tienen versiones *Sync.

pbn avatar Jan 29 '2019 10:01 pbn

Crea varios directorios usandorecursive: true

import 'dart:io';
...

var directory = await Directory('dir/subdir').create(recursive: true);

Consulta la información oficial .

genericUser avatar Oct 30 '2022 16:10 genericUser