flutter - flutter_bloc 4.0.0 如何获取事件属性/参数
问题描述
我对这个库和 BLOC 模式也很陌生,我需要基于特定 id 获取所有产品和单个产品。
我见过很多使用这个库创建的例子,那些人通过 event.paramter 获取参数
就我而言,它不起作用。
Q. 如何在扩展 equatable 时获取事件属性?集团内部。
事件.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];
}
块飞镖
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();
}
}
}
}
解决方案
您需要如下扩展 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]);
}
推荐阅读
- python - 不从自定义视图/表单将 **kwargs 传递给 django-import-export 资源
- tensorflow - Tensorflow,Keras:如何解决“Dimension must be equal, but are ...”一般错误
- python - Pandas - 如何组合来自文本文件的多个数据框并保存到每个输出文件
- python - Flask Sql-Alchemy,sqlalchemy.exc.OperationalError:(psycopg2.OperationalError)致命:用户“abc”的 PAM 身份验证失败
- python-3.x - 正则表达式检查字符串中是否存在一个或多个特殊字符
- c++ - 如何将变量初始化为附加到播放器的相机组件的指针
- python - 当列不为空时,pandas to_excel 问题给出索引空错误
- c# - 从 WebClient.UploadString 接收数据
- python - 通过 select ... where ... 命令使用 python.connector 时出错
- postgresql - 包含大型活动事务的 WAL 在检查点后是否被回收?