[Flutter] 絵文字やマテリアルアイコンからImageデータを取り出す
ちょっとしたアプリを作るだけなのに画像リソースとか用意するのは面倒なので、Flutterでお手軽にアイコンっぽいものを表示するのに、Textウィジェットで絵文字とかIconウィジェットの定義済アイコンを使ってます。
だいたいウィジェットそのままで間に合うのですが、WebViewに定義済のマテリアルアイコン貼り付けたいとか、ListViewのアイコンに絵文字を使いたいとかで、絵文字やマテリアルアイコンからImageデータを取り出したいときがあります。それの簡単な方法を思いついたのでメモしました。もっとちゃんとした方法があるような気がしますが。(誰か教えてください)
Imageロード失敗時の代替指定を使う
ImageクラスのイメージはassetかFileかnetかmemoryから読み出すのですが、読み出しに失敗したときに表示する代替ウィジェットをerrorBuilderパラメータで指定できます。わざとロードできないファイルでイメージ構築して、errorBuilderで使いたい絵文字を表示するTextウィジェットとかIconウィジェットを指定するわけです。簡単でしょ。
Image texticon = Image.file(File(""),
errorBuilder: (BuildContext context, Object exception, StackTrace? stackTrace) {
return const Icon(Icons.text_snippet_outlined);
});
Image sadicon = Image.file(File(""),
errorBuilder: (BuildContext context, Object exception, StackTrace? stackTrace) {
return const Text('😢');
});
ListViewで使うと次のようになります。一番上が Icon( Icons.text_snippet_outlined ) で、下2つは絵文字の「😢📁」です。
ただし欠点もあって、まずロードに失敗するので、デバッグすると本筋と関係ないところで例外起こして止まります。Image.file()だとロード結果がキャッシュされるのか停止は一回で済みますが、Image.asset()で同じことをやると何度も止まってうっとおしい。本来の使い方でないことは確かですね。
いいところはawait指定が不要なので、Widget buildやコンストラクタなど好きなとこに書けるとこです。
Author And Source
この問題について([Flutter] 絵文字やマテリアルアイコンからImageデータを取り出す), 我々は、より多くの情報をここで見つけました https://qiita.com/picpie/items/4adc90b2cae4ece5155f著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .