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

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

Flutter Share.sharefiles deprecated shareXFilesエラー

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

津路です。今年最初の投稿です。
1月24日の夜から朝にかけて、近畿地方にしては、急に冷え込み、吹雪となって、24日夜は雨戸を全て閉めました。
25日朝は、アルバイトの間、手指が凍るほど感覚が一部なくなりそうでした。
皆様の地域では、お仕事、生活に支障はなかったでしょうか??

さて、しばらくFlutterでの開発をしているうちに、SNSを使った共有機能を、share_plusプラグインにて行えるよう、
Share.sharefilesで画像ファイルを突っ込もうとしたのですが、deprecated warningが出てしまいました。

TextButtonのonPressedイベントにて

final directory = (await getApplicationDocumentsDirectory()).path;
final imagePath = await File('${directory}/image.png').create();
await imagePath.writeAsBytes(image);
final files = <XFile>[];
var xfile = XFile(imagePath.path);
files.add(xfile);
await Share.shareXFiles(files, text: '私の画像です');

と、新しい関数で書いたのですが、実行時エラーが発生しました。

Unhandled Exception: PlatformException(error, sharePositionOrigin: argument must be set, {{0, 0}, {0, 0}} must be non-zero and within coordinate

上記から推測すると、イメージファイルが空???なんでしょうね。
imageの実体は、screenshotプラグインのScreenshotControllerを使った、スクリーンショットです。
widgetのショット画像を生成するのですが、実際に取得できるのは、Flutterお馴染みのUint8List型です。

final directory = (await getApplicationDocumentsDirectory()).path;
final imagePath = await File('${directory}/image.png').create();
await imagePath.writeAsBytes(image);

上記コードにて、ディレクトリ下に画像ファイルを作ってしまいます。
と、じゃあ、imagePathは有効なの?です。
デバッグしてみると、imagePathのpathは実際に取得できて、しかもファイルに書かれているようです。_rawPathは190です。
シミュレーターではエラーが出ません。

    上に戻る