【Flutter/Dart】CupertinoPageScaffoldの使い方!iOSライクなUI実装

この記事からわかること
- Flutter/DartのCupertinoPageScaffoldとは?
- iOSライクなUIの実装方法
\ アプリをリリースしました /
環境
- Android Studio:Koala
- Xcode:16.0
- Flutter:3.29.2
- Dart:3.7.2
- Mac M1:Sonoma 14.6.1
公式リファレンス:CupertinoPageScaffold
CupertinoPageScaffold
FlutterのCupertinoPageScaffold
はアプリの基本的なレイアウト構造を、iOSライクなUIをベースとして構築するための土台となるWidgetです。Cupertinoと付与されているWidgetは基本的にiOSのUIに準じたデザインベースになっておりiOSライクなUIを簡単に実装できるようになっています。
CupertinoPageScaffold
ではナビゲーションバー(上部バー)の実装も簡単に可能になります。
定義を確認してみるとプロパティはそれほど多くはなく、navigationBar
やchild
が基本的な部分になります。
AndroidライクなUI(マテリアルデザイン)での実装をしたい場合はScaffold
Widgetを使用してください。
CupertinoPageScaffoldの使い方
CupertinoPageScaffold
は土台部分を構成するWidgetなので画面単位の土台として活用します。
CupertinoNavigationBar
コンストラクタの引数navigationBar
はナビゲーションバー(上部バー)部分のUIを構築するWidgetを指定します。定義を確認すると指定できる型はObstructingPreferredSizeWidget?
になっています。PreferredSizeWidget
は高さが明示的に指定されているという特徴があり、これをラップしたクラスが指定されています。
CupertinoNavigationBar
はObstructingPreferredSizeWidget
を継承しているので基本的にCupertinoNavigationBar
を使用すればOKです。カスタムで実装したい場合はObstructingPreferredSizeWidget
を継承させる必要があります。
child
コンストラクタの引数child
は画面に表示するメインコンテンツを指定します。Widget
型で指定できるので任意のUIを指定することが可能ですが、以下のように普通に実装するとnavigationBar
のUI領域に隠れてしまいます。
これを解消するためにはSafeArea
を使用します。SafeArea
はデバイスの画面の端にあるセンサー領域やノッチ、ステータスバー、ナビゲーションバーなどのインタラクティブなUI要素を避けて、コンテンツを表示するためのWidgetです。これでラップすることでUIが隠れることなく表示されるようになります。
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。