[Flutter] multi_image_pickerをより汎用的に扱えるようにしたい

こちらの記事(https://coneta.jp/article/show/2948)で画像を複数選択する方法を紹介したが、このパッケージは取得したデータがAssetというパッケージ独自のタイプで返却され、AssetThumbというWidgetを使って表示する。

例えば取得したデータをサーバにアップロードするとか、Image Widgetとか別形式で扱いたいとなると、少し加工が必要。

import 'package:path_provider/path_provider.dart';
Future<File> getImageFileFromAssets(Asset image) async {
  final byteData = await image.getByteData();
  final tempFile = File('${(await getTemporaryDirectory()).path}/${image.name}');
  final file = await tempFile.writeAsBytes(
    byteData.buffer.asUint8List(
      byteData.offsetInBytes,
      byteData.lengthInBytes,
    ),
  );
  return file;
}

Asset.getByteDataで元画像のバイトデータを取得できるので、それを元にFileやImageに変換できる。

multi_image_pickerで取得したデータはデバイスのTemporaryエリアに保存されているが、これはpath_providergetTemporaryDirectory()).pathを用いてpathを取得することが可能。