以前は share プラグインで実装していた(と思われる)文章・画像ファイルなどの共有機能(Twitter・Slack・Google ドライブなどへの共有)ですが、現在は share_plus で置き換えられているようですので、メモとして残しておきます。
試したバージョン
- Flutter 2.5.3
- share_plus 3.0.4
- Android 10
- iOS 14.8.1
準備
-
pubspec.yaml(関連部分)
share_plus: ^3.0.4
2022/11/3 追記:
バージョン 5.0.0 以降では Web 対応のアプリとして作成しない場合でもshare_plus_webが必要なようです(同時に読み込まないとエラーに)。
-
pubspec.yaml(関連部分)
share_plus: ^6.2.0
share_plus_web: ^3.1.0
コード例
Example そのままです。
なお、実際にはこちらの個人開発&個人利用アプリの中で使っています。
- hmatsu47 / maptool(GitHub)
import 'package:share_plus/share_plus.dart';
文章のみ共有する場合
void _shareText(String text, String subject) async {
await Share.share(text,
subject: subject);
}
subjectはメールを送信する場合に標題として使われるようです(オプション)。
なお、iPad で利用する場合のみ、sharePositionOriginオプションを指定して表示することができます。
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);
}
画像ファイルを添付・共有する場合
画像ファイルのパスをStringのListで指定します(複数添付可)。
void _shareImages(List<String> imagePaths, String text, String subject) async {
await Share.shareFiles(imagePaths, text: text, subject: subject);
}
こちらのケースではtext・subjectともオプションです。また、iPad のみsharePositionOriginオプションを指定することができます(例示は省略)。
2022/11/3 追記:
バージョン 4.5.0 以降ではshareFiles()が非推奨になり、代わりにshareXFiles()が導入されました。
最初の引数は画像ファイルのパス(String)ではなくXFileのListで指定する形に変わりました。
void _shareImages(List<XFile> files, String text, String subject) async {
await Share.shareFiles(files, text: text, subject: subject);
}
画面表示例
Android の場合
こんな感じで共有先の選択画面が表示されます。
iOS の場合
見た目は異なりますが、共有先の選択画面が表示されます。
Twitter を選択するとこのようになります。
注意点
Readme に記載がありますが、モバイル(Android・iOS)では Facebook への共有ができないようです。


