1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

FlutterでPDFを取得したい君に

Posted at

始めに

Flutterで個人開発のアプリを作っているのですが、その機能の中にPDFをアップロードするという機能がありまして、そのためにどうやってFlutterからPDFを取得できるのかを調べたので、メモがわりに書きました。

ありがたいことにfile_pickerのというパッケージを使うとめっちゃ簡単に実装することができました

環境

Dart: 2.9.1
Flutter: 1.20.2
file_picker: 2.0.9+1

実装

  Future<File> getPdfFile() async {
    FilePickerResult result = await FilePicker.platform.pickFiles();

    if (result != null) {
      File file = File(result.files.single.path);
      return file;
    } else {
      throw Exception('can not pick file');
    }
  }

実装自体はパッケージから関数を呼ぶだけなのですが、今回はPDFだけを取得したいので引数に色々渡す必要があります

それらを渡したのが次のコード

  Future<File> getPdfFile() async {
    FilePickerResult result = await FilePicker.platform.pickFiles(
      type: FileType.custom,  // ←引数を追加
      allowedExtensions: ['pdf'],  // ←引数を追加
    ); 

    if (result != null) {
      File file = File(result.files.single.path);
      return file;
    } else {
      throw Exception('can not pick file');
    }
  }

引数のtypeでファイルのタイプでcustomを指定する
第二引数のallowedExtensionsで選択したいファイルの拡張子を配列で渡す(今回の場合は.pdfのみだが、.pngや.docを追加できたりもする)

そうすることによってPDFのファイルが取得できるので、後は好きな形に変形して終わりです

iOSの設定

今回はiOSの方でしか動作確認をしてないので、Androidでは動かない可能性があります。。。

XcodeでCapabilityを追加

XcodeでTARGETSの「Signing & Capability」の左上のCapabilityのプラスボタンを選択。
そこから「iCloud」を追加

TARGETSの「Signing & Capability」に「iCloud」の項目が追加されていることを確認します。
iCloud項目の中のServices項目で

  • Key-value storage
  • iCloud Documents
  • CloudKit

とある中で「iCloud Documents」だけにチェックを入れる。

Services項目の下にあるContainers項目に自分のアプリのBundle IDのContainerを作成

ここら辺の設定はこちらの記事を参考にさせていただきました

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?