1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Flutter iOS 幅320px端末で status barを隠す

Last updated at Posted at 2019-12-26

iPhone SEサイズの場合で、表示したいものの領域が足りなくなり、ステータスバーを隠すことで、領域を増やす対応をしたい場合があったのでメモ。

画面のサイズの取得と、ステータスバーの非表示のコードです。

if (MediaQuery.of(context).size.width == 320) {
 SystemChrome.setEnabledSystemUIOverlays([]);
}

アプリケーションの開始直後からこの設定を行いたかったので、main()の中でやりたいところでしたが、contextへアクセスが難しいのでコードを書く場所を悩みました。
Widgetのbuild内に書くのは好ましくないような気がしたので、最終的にはinitState()内に書くことにしました。
しかし、initState()が呼び出された時には、contextが取れずdelayを付けて実行する形にしました。

contextのアクセスが、didChangeDependencies内であれば安全ということだったので、最終的に、didChangeDependencies() を overrideして、そこに書いた。
api.flutter.dev: didChangeDependencies method

@override
  void didChangeDependencies() {
    super.didChangeDependencies();

    //幅320px端末で status barを隠す
    if (MediaQuery.of(context).size.width == 320) {
      SystemChrome.setEnabledSystemUIOverlays([]);
    }
  }

動作コード

こちらに一式用意しています。
https://github.com/quqjp/flutter-test

コード箇所はこちら。
https://github.com/quqjp/flutter-test/tree/master/lib/sample2

参考ページ

1
0
0

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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?