FlutterでImage.networkの画像サイズを取得する。
Flutterで画像をWidgetとして表示させる方法は主に2つあると思います。一つは登録したてある画像をImage.asset
で読み込む方法。そしてもう一つがImage.network
を使用し,画像URLから表示させる方法です。
このImage.network
を使用する方法は画像の登録等の手間がかからないためお手軽に画像を表示させることができるのですが画像サイズの取得が簡単にはできません。なので自分が2時間くらい様々な記事を見てできた方法を紹介します。
.dart
import 'dart:async';
import 'dart:ui' as ui;
Future<Size> getImageSize() async {
final Image image = Image.network('画像URL');
final Completer<Size> completer = Completer<Size>();
image.image.resolve(ImageConfiguration.empty).addListener(
ImageStreamListener(
(ImageInfo image, bool synchronousCall) {
final ui.Image myImage = image.image;
final Size size = Size(
myImage.width.toDouble(), myImage.height.toDouble());
completer.complete(size);
},
),
);
return completer.future;
}
この関数を使用することで画像サイズが非同期ですが取得できます。
参考文献
Flutterで画像を表示する方法【まとめ】
How do I determine the width and height of an image in Flutter?
How to get size from a NetworkImage in flutter