我对这个库和区块模式也很陌生,我需要获取所有产品和基于特定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();
}
}
}
}发布于 2020-04-23 21:27:58
你应该扩展ProductsEvent
abstract class ProductsEvent extends Equatable {
const ProductsEvent();
}
class FetchProducts extends ProductsEvent {
@override
List<Object> get props => [];
}
class FetchSingleProduct extends ProductsEvent {
final int id;
const FetchSingleProduct({@required this.id}) : assert(id !=null);
@override
List<Object> get props => [id];
}发布于 2020-04-23 21:35:49
你需要像下面这样扩展ProductsEvent,并且你还必须将道具传递给超类。
@immutable
abstract class ProductsEvent extends Equatable {
ProductsEvent([List props = const []]) : super(props);
}
class FetchProducts extends ProductsEvent {
@override
String toString() => 'LoadTodos';
}
class FetchSingleProduct extends ProductsEvent {
final int id;
AddTodo(this.id) : super([id]);
}https://stackoverflow.com/questions/61387972
复制相似问题