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);
}
Utilisez downloads_path_provider , sur Android il enregistrera le fichier sur les téléchargements.
pour IOS, vous devez utiliser getApplicationDocumentsDirectory
from path_provider et ajouter des autorisations sur info.plist
pour rendre le dossier visible à l'utilisateur:
<key>LSSupportsOpeningDocumentsInPlace</key>
<true/>
<key>UIFileSharingEnabled</key>
<true/>
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)`.