大阪市中央区 システムソフトウェア開発会社

営業時間:平日09:15〜18:15
MENU

Flutterで画像共有 shareXFiles

著者:津路高広
公開日:2023/01/30
最終更新日:2023/01/30
カテゴリー:技術情報
タグ:

津路です。

Flutter Share.sharefiles deprecated shareXFilesエラーでは、シミュレータではエラーが出ませんでした。

さて、実機iPhone6(iOS12.5.4)で実行すると、PlatformExceptionが発生します。ソースコードを追ってみると、
shareFilesWithResult関数でエラーが起きています。関数の引数は、以下です。

この中のsharePositionOriginが0だよと言ってます。

がshareXFilesの引数で、
私は、この引数を与えていないのが原因のようです。

そこで、share_plusパッケージのReadmeをみてみると、iPadの項目なんですが、
share_plus requires iPad users to provide the sharePositionOrigin parameter.
と記載されています。
この引数の例として、sharePositionOrigin: box!.localToGlobal(Offset.zero) & box.size
が記載されています。boxは、
final box = context.findRenderObject() as RenderBox?;
ここで、難しいクラスが出てきます。RenderObjectです。
api.flutter.devのページによると、Widgetのレンダリングに関わる基礎のクラスのようです。
これのオブジェクトを取得して、グローバル座標に変換して、box.sizeと演算子&でRectインスタンスを生成し、sharePositionOriginとするのかな?と。

実際に引数として渡すと、正常にシェア機能を使えました。

    次の記事 :
    上に戻る