web-dev-qa-db-fra.com

Flutter - Enregistrer le fichier visible par l'utilisateur

Dans un projet Flutter, je crée un document PDF. Je peux enregistrer le document dans le chemin de l'application. Mais l'utilisateur n'y a pas accès. Sinon, comment puis-je enregistrer le fichier dans un autre dossier où l'utilisateur le voit?

import 'package:path_provider/path_provider.Dart';
  Future<void> savePdfDocument() async {
    final PdfCreater generatedPdf = PdfCreater(document);
    final List<int> generatedPdfDocument = generatedPdf.buildPdf();

    final String dir = (await getApplicationDocumentsDirectory()).path;
    final String path = '$dir/example.pdf';
    final File file = File(path);
    file.writeAsBytesSync(generatedPdfDocument);
  }
3
Markus Bach

Utilisez downloads_path_provider , sur Android il enregistrera le fichier sur les téléchargements.

pour IOS, vous devez utiliser getApplicationDocumentsDirectoryfrom path_provider et ajouter des autorisations sur info.plist pour rendre le dossier visible à l'utilisateur:

<key>LSSupportsOpeningDocumentsInPlace</key>
<true/>
<key>UIFileSharingEnabled</key>
<true/>
1
Rafael Honda

si vous utilisez cette application uniquement sur Android, vous pouvez essayer d'utiliser:

Future<Directory> getExternalStorageDirectory()

du path_provider brancher.

Cette méthode est utilisée pour accéder au répertoire supérieur et accessible au public dans le stockage. De là, vous pouvez ajouter le chemin du sous-répertoire comme /Downloads/your_file_name.

Cela devrait probablement vous aider. Si ce n'est pas le cas, ajoutez un commentaire et faites-le moi savoir.

Le code source de la méthode documentation :

/// Path to a directory where the application may access top level storage.
/// The current operating system should be determined before issuing this
/// function call, as this functionality is only available on Android.
///
/// On iOS, this function throws an [UnsupportedError] as it is not possible
/// to access outside the app's sandbox.
///
/// On Android this uses the `getExternalFilesDir(null)`.
0
Harshvardhan Joshi