UdacityのBuild Native Mobile Apps with Flutterコースを受けてみる その2
結構日数が経ってしまいましたがその2です。 前回に引き続き、UdacityのFlutterコースの受講メモを書いていきます。 今回はFlutterの内部の動きやウィジェットの紹介の話(7〜11回)でした。
Udacityのコース www.udacity.com
7.Flutter's Reactive Framework
- Flutter
- Widget
- ウィジェットはFlutterアプリの基盤
- ウイジェットはユーザインタフェースの一部で、ほぼすべてのウィジェットはDartで書かれている
- レイアウトのカスタマイズやテキスト配置のための個別のファイルは無い
- 一つのFlutterウィジェットの中で、すべての必要なコードは定義される
- Widget Lifcycle
- ユーザ入力やアニメーションなどによってUIの状態が変わったとき、ウィジェットは新しい状態に従って自身を再構築する
- UIを状態の関数として定義できる
- UIの状態が変わった時、UIを更新するためだけのコードを書く必要は無い
- Flutterの内部での動き
- フレームワークはレンダーツリーの更新のために最小限の変更を決めるための差分を作る
- レンダリングエンジンが自体がアプリの一部であるので、UIのレンダリングコードをネイティブプラットフォームにブリッジする必要は無い
- レイアウトとレンダリングの呼び出しは、デバイスのカメラのようなプラットフォーム固有の呼び出しよりはるかに頻繁に発生する。すべてのレンダリング作業をアプリ側で行うことで、Flutterは高速なウィジェットツリーの描画、再描画を行うことができ、それに従いリッチな動きとスムーズなスクロールができる。
- このレンダリングエンジンは、2DグラフィックスのレンダリングライブラリであるSkiaとDartで構築されていて、IOSとAndroidデバイスの両方にウィジェットを表示できる
- 各プラットフォームはウィジェットを配置するためのキャンバスを提供するだけで良い
8.Flutter's Development Tools
- ウィジェットの説明に入る前にFlutterの3つの開発ツールの紹介
- ホットリロード
- ウィジェットインスペクタ
- ChromeのWeb Inspectorみたいなもの
- デバイスのピクセル、ウィジェット、ウィジェットツリー、アプリでウィジェットが生成されたコード行を行き来できる
- インスペクタモードを使用するときはアプリが実行されている必要がある
- AndroidStudioの view > tool windows から開く(もしくはウィンドウ右端のタブ)
- Xのついた丸いアイコンが inspect ボタン
- 2つの長方形のアイコンはプラットフォーム切り替えボタン
- inspect ボタンを押してinspectモードにするとアプリの画面が青くなり、特定のウィジェットを検査できる
- アプリ画面左下に出ている虫眼鏡アイコンをクリックすると、ウィジェットを選択できる
- インスペクタを利用してウィジェットのパディング等の値を見ることができる
- コードの自動整形
9. The Wonderful Things about Widgets
- Widget
- StatelessWidget
- 不変
- プロパティがfinalになっているので、一旦作成すると変更できない
- StatefulWidget
- ステートオブジェクトを持つ
- 詳細は後で
- Widgetがレイアウトでどのように使われるか
- Widgetは一部のパラメータを解析してインスタンス化される
- コンテナウィジェットはアプリの分割や既存のWidgetの修飾など色々な用途に使われるWidget
- webでいうと、コンテナウィジェット=React Nativeのdivみたいなもの
- コンテナウィジェットをカスタマイズするには、widthやheightなどのプロパティを入力していく
- 殆どのWidgetは child または children プロパティを持っていて、Widgetを入れ子にするときに使う
- child プロパティは paddingやマテリアルアプリなど、1つの子だけを持つwidgetに存在する
- childrenプロパティは子にリストをとるような、column、ListViewウィジェットに存在する
- 子を持たせなくてもよい(デフォルト動作)し、わざわざnullを入れたりする必要もない
10. Quiz: Explore Flutter Widgets
- Widgetに慣れるためのクイズ
- シナリオごとに適切なWidgetを選択する
- https://flutter.dev/docs/development/ui/widgets から適切なWidgetを探す
WIdgetの数がかなりたくさんあるので、しっかり覚えていかないとなーという感じでした。 Youtubeで公式が今週のウィジェットという動画を出しているので、こちらもチェックしていきたいです。
Flutter Widget of the Week - YouTube
次回は 11.Dissect Hello Rectangle から。
そろそろ手を動かすターンに入りそうなので楽しみです。