Как преобразовать StateNotifierProvider приложения Riverpod Todos для использования StreamProvider с данными из Firestore?
Я изучал это приложение Todos, предоставленное Реми, в качестве примера использования Riverpod.
Мой вопрос: как я могу преобразовать StateNotifierProvider кода для использования StreamProvider вместо фиктивного Json?
Если вы посмотрите файл main.dart, вы найдете этот код.
final todoListProvider = StateNotifierProvider((ref) {
return TodoList([
Todo(id: 'todo-0', description: 'hi'),
Todo(id: 'todo-1', description: 'hello'),
Todo(id: 'todo-2', description: 'bonjour'),
]);
});
Итак, вместо этих фиктивных данных я хотел бы получить их из Firestore. Я пытался сделать это внутри StateNotifier. Но это не сработало, поэтому я думаю, что StateNotifierProvider был бы лучшим местом для этого.
class CartRiverpod extends StateNotifier<List<CartItemModel>> {
CartRiverpod([List<CartItemModel> products]) : super(products ?? []);
final productStream = FutureProvider<List<ProductModel>>((ref) async {
final ListofProducts = await ref.watch(productListStreamProvider);
});
final productStream = ref.watch(productListStreamProvider);
void add(ProductModel addProduct) {
bool productExists = false;
state = [
...state, new CartItemModel(product: addProduct),
];
}
Можно ли сделать это внутри StateNotifier? Если нет, как я могу изменить свой код, чтобы сделать это внутри StateNotifierProvider?