Closed fbayona13 closed 2 years ago
@fbayona13 Your question is better suited for support channels like StackOverflow, so please ask the same there. Closing from here, as this isn't an issue, but more of a code assistance question.
Discussed in https://github.com/FirebaseExtended/flutterfire/discussions/8063
> getAllCategories(); } ``` category_repo.dart ``` class CategoryRepository extends BaseCategoryRepository { final FirebaseFirestore _firebaseFirestore; CategoryRepository({FirebaseFirestore? firebaseFirestore}) : _firebaseFirestore = firebaseFirestore ?? FirebaseFirestore.instance; @override Stream
> getAllCategories() { return _firebaseFirestore .collection("categories") .snapshots() .map((snapshot) { return snapshot.docs.map((doc) => Category.fromSnapshot(doc)).toList(); }); } } ``` category_bloc.dart ``` class CategoryBloc extends Bloc {
final CategoryRepository _categoryRepository;
StreamSubscription? _categorySubscription;
CategoryBloc({required CategoryRepository categoryRepository})
: _categoryRepository = categoryRepository,
super(CategoryLoading());
@override
Stream mapEventToState(CategoryEvent event) async* {
if (event is LoadCategories) {
yield* _mapLoadCategoriesToState();
}
if (event is UpdateCategories) {
yield* _mapUpdateCategoriesToState(event);
}
}
Stream _mapLoadCategoriesToState() async* {
_categorySubscription?.cancel();
_categorySubscription = _categoryRepository
.getAllCategories()
.listen((categories) => add(UpdateCategories(categories)));
}
Stream _mapUpdateCategoriesToState(
UpdateCategories event) async* {
yield CategoryLoaded(categories: event.categories);
}
}
```
category_event.dart
```
abstract class CategoryEvent extends Equatable {
const CategoryEvent();
}
class LoadCategories extends CategoryEvent{
@override
List