web-dev-qa-db-ja.com

Flutter-ユーザーに表示される保存ファイル

Flutterプロジェクトでは、PDFドキュメントを作成します。アプリのパスにドキュメントを保存できます。しかし、ユーザーはそれにアクセスできません。または、ユーザーに表示される別のフォルダーにファイルを保存するにはどうすればよいですか?

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

downloads_path_provider を使用しますAndroidの場合、ダウンロード時にファイルを保存します。

iOSの場合、getApplicationDocumentsDirectoryfrom path_providerを使用し、info.plistに権限を追加して、ユーザーにフォルダーを表示する必要があります。

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

このアプリをAndroidでのみ使用している場合は、以下を使用してみてください。

Future<Directory> getExternalStorageDirectory()

path_providerプラグインから。

このメソッドを使用して、ストレージ内の最上位のパブリックアクセス可能なディレクトリに移動します。ここから、サブディレクトリパスを/Downloads/your_file_nameとして追加できます。

これはおそらくあなたを助けるはずです。表示されない場合は、コメントを追加してお知らせください。

メソッドのソースコード 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