🍔
FlutterWebでCORSエラーになる画像を<img>タグで表示する
WebHtmlElementStrategy
Flutter 3.29でImage.network
のパラメータにwebHtmlElementStrategy
が追加されました。
このwebHtmlElementStrategy
パラメータによって、CORSエラーになる画像を<img>
タグを使った表示の使い方が選択できるようになりました。このオプションはFlutter Webのみサポートされています。
enum WebHtmlElementStrategy {
// バイナリフェッチのみ
never,
// バイナリフェッチで表示。失敗したらHTMLタグ表示にフォールバック
fallback,
// HTMLタグ表示で表示。失敗したらバイナリフェッチにフォールバック
prefer,
}
webHtmlElementStrategy.preferのデモ
DartPadでWebHtmlElementStrategy.prefer
を指定し、画像を表示してみます。
import 'package:flutter/material.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
body: Center(
child: Image.network(
'https://i.gyazo.com/35fe01c334a2e737a1382857046d036c.png',
webHtmlElementStrategy: WebHtmlElementStrategy.prefer,
),
),
),
);
}
}
<img>
タグを使った表示になっていることが確認できました。
上記のコードは以下のリンクから実行できます。
不具合
設定がキャッシュされるため、別々のパラメータを指定できないようです。
BotFitのパラメータが機能していないようです。
まとめ
-
Image.network
のパラメータにwebHtmlElementStrategy
が追加された -
webHtmlElementStrategy
はnever
,fallback
,prefer
の3種類 - PlatformViewでの表示であったり、不具合があったりまだ不安定かも
簡易なアプリであれば十分使える範囲で、個人的に嬉しい機能でした!
Discussion