LoginSignup
12
6

More than 1 year has passed since last update.

小ネタ/Flutter で share_plus を使って共有機能を実装する

Last updated at Posted at 2021-11-28

以前は share プラグインで実装していた(と思われる)文章・画像ファイルなどの共有機能(Twitter・Slack・Google ドライブなどへの共有)ですが、現在は share_plus で置き換えられているようですので、メモとして残しておきます。

試したバージョン

  • Flutter 2.5.3
  • share_plus 3.0.4
  • Android 10
  • iOS 14.8.1

準備

  • pubspec.yaml(関連部分)
pubspec.yaml
  share_plus: ^3.0.4

2022/11/3 追記:
バージョン 5.0.0 以降では Web 対応のアプリとして作成しない場合でもshare_plus_webが必要なようです(同時に読み込まないとエラーに)。

  • pubspec.yaml(関連部分)
pubspec.yaml
  share_plus: ^6.2.0
  share_plus_web: ^3.1.0

コード例

Example そのままです。

なお、実際にはこちらの個人開発&個人利用アプリの中で使っています。

インポート
import 'package:share_plus/share_plus.dart';

文章のみ共有する場合

文章のみ
  void _shareText(String text, String subject) async {
    await Share.share(text,
        subject: subject);
  }

subjectはメールを送信する場合に標題として使われるようです(オプション)。

なお、iPad で利用する場合のみ、sharePositionOriginオプションを指定して表示することができます。

文章のみ(iPad)
  void _shareText(BuildContext context, String text, String subject) async {
    final box = context.findRenderObject() as RenderBox?;
    await Share.share(text,
        subject: subject,
        sharePositionOrigin: box!.localToGlobal(Offset.zero) & box.size);
  }

画像ファイルを添付・共有する場合

画像ファイルのパスをStringListで指定します(複数添付可)。

画像ファイル付き
  void _shareImages(List<String> imagePaths, String text, String subject) async {
    await Share.shareFiles(imagePaths, text: text, subject: subject);
  }

こちらのケースではtextsubjectともオプションです。また、iPad のみsharePositionOriginオプションを指定することができます(例示は省略)。


2022/11/3 追記:
バージョン 4.5.0 以降ではshareFiles()が非推奨になり、代わりにshareXFiles()が導入されました。

最初の引数は画像ファイルのパス(String)ではなくXFileListで指定する形に変わりました。

画像ファイル付き
  void _shareImages(List<XFile> files, String text, String subject) async {
    await Share.shareFiles(files, text: text, subject: subject);
  }

画面表示例

Android の場合

こんな感じで共有先の選択画面が表示されます。

Screenshot (2021_11_28 22_30_36).png

iOS の場合

見た目は異なりますが、共有先の選択画面が表示されます。

IMG_0367.png

Twitter を選択するとこのようになります。

IMG_0368.png

注意点

Readme に記載がありますが、モバイル(Android・iOS)では Facebook への共有ができないようです。

12
6
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
12
6