【发布时间】:2020-08-06 19:44:25
【问题描述】:
我对这个库和 BLOC 模式也很陌生,我需要根据特定 id 获取所有产品和单个产品。
我见过很多使用这个库创建的例子,那些人是通过 event.paramter 获取参数
在我的情况下它不起作用。
问。如何在扩展 equatable 时获取事件属性?集团内部。
events.dart
abstract class ProductsEvent extends Equatable {
const ProductsEvent();
}
class FetchProducts extends Equatable{
@override
List<Object> get props => [];
}
class FetchSingleProduct extends Equatable{
final int id;
const FetchSingleProduct({@required this.id}) : assert(id !=null);
@override
List<Object> get props => [id];
}
Bloc.dart
class ProductsBloc extends Bloc<ProductsEvent, ProductsState> {
final AbstractProductsRepository abstractProductsRepository;
ProductsBloc(this.abstractProductsRepository);
@override
ProductsState get initialState => InitialProductsState();
@override
Stream<ProductsState> mapEventToState(
ProductsEvent event,
) async* {
yield ProductsLoadingState();
if(event is FetchProducts){
try{
final productsData = await abstractProductsRepository.fetchProducts();
yield ProductsLoadedState(productsData);
}on Error{
print("Error in Block");
yield ProductErrorState();
}
}else if(event is FetchSingleProduct){
try{
//Event.id - not working.
final productData = await abstractProductsRepository.fetchSingleProduct(**event.id**);
yield SingleProductLoaded(productData);
}on Error{
print("Error in Block");
yield ProductErrorState();
}
}
}
}
【问题讨论】:
-
当你传递事件时,它会进入任何 try bloc 吗?
-
尝试为两者添加,但没有接受。论据。
-
Thanx @VirenVVarasadiya,我的错,我正在扩展到所有事件而不是事件类型的平等。通过扩展事件类型 Everthing 现在工作正常
-
如果有用,请接受我的回答。@techieasif
标签: flutter bloc flutter-bloc