Flutter

A short lead description about this section page. Text here can also be bold or italic and can even be split over multiple paragraphs.

Testable

テストしやすいコードを書くことを心がける。

DateTime.now() を使用すると、テストで日時を差し替えることができない。

clock パッケージを使用し、代わりに clock.now() を使用しておくことで、 withClock メソッドを使ってテスト時に日時を差し替えることができる。

APIレスポンスのモデルクラスをUIコンポーネントでそのまま使用するか

以下に該当する場合は、必要なフィールドのみを個別にUIコンポーネントの引数で渡して利用するようにする。

  • 特定のAPIに依存しない共通のUIコンポーネントである
  • モデルクラスとの関連性が低いUIコンポーネントである
  • モデルクラスに、UIコンポーネントで使用しない余分なフィールドが多く含まれる

以上に該当しない場合や、UIの名前とモデルクラスの名前が一致したり、違和感ない場合はそのまま使用する。

e.g., EventReport というモデルクラスを EventReportListTile の引数として使用する。

UIに最適化された、専用のIn-houseAPIであれば、そのまま使用できることが多い。

Pageクラスの引数には極力オブジェクトを設定しない

詳細ページや編集ページなどのPageクラスで引数に値を渡したい場合は、ID等のパラメータを設定し遷移先でProviderを通じて必要なオブジェクトを取得する。

なお、コスト的な問題やオブジェクトにした場合のメリットが大きい場合は除く。


App lib directories

Flutterアプリのlibディレクトリの構成についてのAltive標準構成を提示する。 アプリごとに最適解は異なるが、推奨を示す。 実践して感じた改善案があれば、ぜひIssueやPRを投げてください。

Riverpod

Riverpod is a state management library for Flutter. It is a fork of the Provider package.

REST API Client

REST API Client

Navigator

FlutterアプリにおけるNavigatorの使い方について