はじめに
こんにちは!
Flutter開発を始めて2年目となるエンジニアです!
ある日、後輩から「Image.networkが表示されないです。」っていうヘルプが飛んできました。
終業間近だったためとりあえずプッシュしておいてもらい、その場は終わり、デバッグしてみると確かに画像が読み込まれない赤の罰が表示されていました。
今回の記事では、これの原因と解決方法を解説します。
こんな人に読んでほしい
- Flutterでの開発を行っている方
- Flutterでの開発を検討している方
- Flutter初学者の方
エラーコード
SocketException: Failed host lookup: ‘{project}’ (OS Error: No address associated with hostname, errno = 7)
原因
結論、Androidエミュレータからネットワークに接続して画像を表示させようとした際に、AndroidManifest.xmlで接続許可をしないといけませんでした。
未経験のエンジニアがExceptionと対峙した時、なかなか原因が掴みにくいかもしれません。
今回問題となっていたSocketExceptionは、
Socket(ソケット)
の
Exception(例外)
になるので、Socketって何を指しているんだろう??から考えるとわかりやすいかもしれませんね。
ちなみに、以下の記事がわかりやすかったです!!
つまり、端末とネットワークを繋げる部分で例外が発生しているみたいですね!
ここまで来ればもう簡単。
対応
解決方法は、{project}/android/app/src/main/AndroidManifest.xml
に、インターネット利用許可のパーミッションを1行追加するだけでOK。
<manifest xmlns:android="http://~~"
package="com.{project}">
<uses-permission android:name="android.permission.INTERNET"></uses-permission> // ここを追加!!!
<application
android:label="{project}"
android:name="${applicationName}"
android:icon="@mipmap/ic_launcher">
~省略~
</manifest>
設定がしたら、再度デバッグもしくはエミュレータを立ち上げ直してみてください!
最後に
エラーやExceptionは原因を教えてくれてるもの。
最初は解決までに時間がかかるかもしれませんが、真っ赤な文字と向き合ってみてください!
以上、最後まで読んでいただいてありがとうございました!