Closed2
Flutter+Firstore+Riverpodアーキテクチャ
Repositoryパターン
データへの永続化を隠蔽するパターン
ドメイン駆動設計的には、そういう永続化の「実装」の関心事と、ドメイン(問題領域)の関心事を分離することを重視する。
あるFirestoreコレクションに対し複数クエリを使いたい場合、どう設計するか悩む。
class TodoRepository{
TodoRepository(this._read) {
// ..
final todosRef = FirebaseFirestore.instance.collection('todos');
final mmQuery = todosRef.where('field',isEqualTo: 'mm',);
final xxQuery = todosRef.where('field',isEqualTo: 'xx',);
}
void add(Todo todo)async{
}
}
Repositories パターン : データベースの実装は忘れようね | システム設計日記
やはりお前たちのRepositoryは間違っている - Qiita
StateNotifier+Firestore
基本、StateNotifierは1画面につき1つにしておく方が個人的に使いやすい。
Firestoreでsnapshots()
を使いつつ、リアルタイムにstate
を更新するにはsnapshots().listen()
内へ処理を書く。
class TodoController extends StateNotifier<TodoState> {
TodoController(this._read) : super(TodoState()) {
todoQuery.snapshots().listen((snapshot) {
final newTodos = snapshot.docs
.map(
(doc) => Todo.fromJson(
doc.data(),
),
)
.toList();
state = state.copyWith(todos:newTodos);
});
}
}
このスクラップは2021/01/01にクローズされました