Flutterでアプリを作成する際、アプリが持つべき機能や構造を何度も実装するのはとても無駄なことですね。
AndroidStudioでFlutterプロジェクトを作成すると、カウンターアプリが生成されますが、欲しいコードが全然実装されてません。
そこで、よく使うコードを含んだテンプレートを作成しました。
カウンターの値と、最終更新日をローカルに保持するアプリです。
テンプレアプリが持つ機能
- ローカルデータ保存
SharedPreerenceでローカルにデータを保存する機能
データベースに置き換えて使ってもよき
- 多言語化
多言語化の予定が無くても、文字列リソース置き場として使った方がいいと思う
- レスポンシブ
LayoutBuilderとbreakpointで、スマホ、タブレット、デスクトップに場合分け
- アプリ全体へ反映する設定
ダークモードや言語設定などのアプリ全体へ反映したい設定を行うクラスあり
テンプレアプリの構造
Androidアプリ開発で私が良く使っている構造です。
同じモバイルアプリなので、当然Flutterにも適用可能です。
- View
Widgetの集まりです。
なるべく状態はViewModelにもたせて、StatelessWidgetで書けるとよいと思います。
状態はProviderを使って取得します。
- ViewModel
UIの状態を保持し、変更をViewに通知します。
また、複雑なロジックを処理するためにUseCaseをコールしたり、Repositoryを通じてデータの読み書きを行います。
- UseCase
複雑なロジックを実行します。
シンプルな場合は、クラスを作らずにViewModelに書いたりもします。
- Repository
データの読み書きを行います。
データの読み書きに関しては様々なライブラリがあると思いますが、Repositoryより下位に隠蔽しておくことで、ライブラリを変更したときの影響範囲を小さくできます。
- Data
実際にデータへのアクセスを実装しています。