Flutter Webを利用する場合、WebだけでなくAndroidやiOS用にも開発したい場合がある。その際に、実行中にWebであるかどうかを判断する方法。
AndroidやiOSの場合は Platform.isAndroid
や Platform.isIOS
でチェックできるが、Webには同じものが無い。ではどうすればよいかというと、 kIsWeb
というトップレベル定数があるのでそれで判別できる。
Webの場合、 web/assets
フォルダに画像を入れる。そしてその下のパスでファイル名を指定する。例えば web/assets/test.png
を使用する場合、 AssetImage("test.png")
として指定する。
しかしAndroid等の場合、フルパスで指定する必要がある。そのため同じ画像を使おうと思っても AssetImage("web/assets/test.png")
となってしまう。そのため、実行時に kIsWeb を使って判別をしなければならない。雑な例だが、下記のような感じ。
AssetImage(kIsWeb ? "test.png" : "web/assets/test.png")
実際にはパスを取得するメソッドか何かを作ってそれを使うようにしたほうが良いと思う。(あとは何か便利な方法があるんだろうか?)
Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。
また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!
こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?
コメント