全体のまとめ - 1m-llc/Flutter-KtoK GitHub Wiki
学習方法
以下の順番が良さそう
1. 環境構築
2. コーディングスタイル理解
3. Dart学習
4. Flutter学習
5. 状態管理学習
デザイン
マテリアル・クパチーノで2パターン作るか判断が必要
マテリアルデザインに寄せるなら、開発側とのギャップを抑えられるようデザイナーに「Flutter Gallery」を予め確認して欲しい。
アーキテクチャ
CleanArchitecture + MVVM
DeNAでは、Clean Architecture+Bloc を採用 https://engineer.dena.com/posts/2020.03/techcon-app-2020-made-with-flutter-architecture/
状態管理
Provider+ChangeNotifier
CI/CD
Bitrise
テスト
Flutter公式サイトに単体、ウィジェット、結合テストの方法が良さそう
永続化
sharedpreferences
(+moor)
通信
http(Flutter公式)
フォルダ構成
Clean Architecture
/
∟ data ← 永続化を定義
∟ firebase_repositories ← Firestoreと通信
∟ moor_repositories ← moorと通信
∟ spres_repositories ← SharedPreferencesと通信
∟ enum ← SharedPreferencesのkey定数
∟ stub_repositories ← テスト用ダミーと通信
∟ domain ← ビジネスロジックを定義
∟ entities ← ストレージに保存するエンティティ
∟ providers ← 状態管理
∟ repositories ← データ層のリポジトリを利用
∟ usecases ← アプリケーションのビジネスロジック
∟ presentation ← UIを定義
∟ constants ← 定数を定義
∟ navigations ← 画面遷移を定義
∟ utils ← ユーティリティーを定義
∟ viewmodel ← UIのロジック&UseCaseから流れてくるDataとViewのバインディングを定義
∟ views ← ウィジェットを定義
∟ main.dart
/assets ← 素材
∟ fonts ← フォント
∟ icons ← アイコン
∟ images ← 画像
/test ← テストコード
∟ repositories ← 通信テスト
∟ usecases ← アプリケーションロジックテスト
∟ viewmodels ← UIロジックテスト
∟ widgets ← ウィジェットテスト
/pubspec.yaml ← アプリケーション定義
/flutter_native_splash.yaml ← スプラッシュ画面定義