LoginSignup
9
2

More than 3 years have passed since last update.

Flutterで起動時に白い画面が長時間表示されるのを解消する

Last updated at Posted at 2020-05-02

Flutterのアプリを起動すると、しばらく白い画面が表示されますよね。
デバッグビルドだけかと思っていたら、そうでもない。
リリースビルドでも、結構最初の画面が出るまで、その白い画面が表示されている時間が長い。

これはなんぞ? Flutterの諸々初期化に時間がかかってやむを得ない現象なのか?回避方法は無いのか?

と思っていたら、androidiosの各フォルダに、こんなファイルがあるのに気づきました。

android_res.png]

ios_launcher.png

なんぞ?と思ってそれぞれのファイルや、同じフォルダにあるREADME.mdを読んでみたところ。

どうやら、スプラッシュ画面用のリソースを設定するところのようで、デフォルトで真っ白なスプラッシュ画面が起動されているのだと判明しました。

そこで、この画像を差し替えればいいじゃん!と思って作り始めたもののの・・・

解像度別に用意するの面倒くさいorz

となって、

「アプリアイコンも便利なジェネレータ作って下さっている方がいた。スプラッシュだって有るに違いない」

と探す旅に出たら、案外サクッと見つけてサクッと入れられたので、紹介します。

環境など

ツールなど バージョンなど
MacBook Air Early2015 macOS Mojave 10.14.5
Android Studio 3.6.1
Java 1.8.0_131
Flutter 1.12.13+hotfix.5
Dart 2.7.0

参考サイト

他にも色々出てきますが、上記の記事が分かりやすかったです。

スプラッシュ画面設定手順

1.パッケージを導入

flutter_native_splashというパッケージを入れます。
pubspec.yamlに追加ですね。アプリの実行には関係ないので、dev_dependenciesの方に入れます。

pubspec.yaml
dev_dependencies:
  flutter_test:
    sdk: flutter

  ...

  # splash
  flutter_native_splash: ^0.1.9

依存ライブラリの指定の後に、以下の記述を入れます。

pubspec.yaml
# splash generate sources
flutter_native_splash:
  image: "assets/splash/splash.png"
  color: "97d4d9"

インデントに注意してください。flutter_native_splash:dev_dependencies:等と同じ階層になければなりません。

pubspec.yaml
dev_dependencies:
  flutter_test:
    sdk: flutter

  ...

  # splash
  flutter_native_splash: ^0.1.9

flutter_native_splash:
  ...

こういう形になっているはずです。

2.スプラッシュ画像の用意

スプラッシュは、背景色+ロゴ画像で表示されます。

pubspec.yamlで指定した、imageのパスに、ロゴ画像を配置します。
colorに、背景色をRGB形式で指定します。

画像を画面いっぱいに表示するfill指定も可能です。詳しくは、パッケージのページで確認して下さい。

3.生成コマンドを実行

コンソールなどで以下のように実行するだけ。

$ flutter pub get
$ flutter pub run flutter_native_splash:create

画像がそれぞれ、以下に配置されます。

  • Android
    • app/src/main/drawable-(解像度)/splash.png
  • iOS
    • Runner/Assets.xcassets/LaunchImage.imageset

基本的には以上でスプラッシュが白い画面から、自分が作成したロゴ表示に変わります!

4.それでも白い画面が表示される場合

端末のキャッシュによるところがあるみたいですので、一度アンインストールして再インストールすると良いようです。

9
2
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
2