在带有BLoC的dart / flutter项目中,我有以下代码
abstract class BasePage extends StatelessWidget {
Widget get body;
const BasePage({@required Key key}) : super(key: key);
Bloc create(BuildContext context) {
final dao = Provider.of<LessonsDao>(context, listen: false);
return LessonListBloc(dao)..add(LoadListEvent());
}
@override
Widget build(BuildContext context) {
final blocs = createBlocs(context);
return BlocProvider(
lazy: false,
create: (context) {
return create(context);
},
child: Material(child: body),
);
}
}
现在,当我想将创建函数的返回类型更改为Bloc
时,订阅者小部件(即侦听LessonListBloc中yield
中的LessonsListLoaded)不会传递给{ {1}}小部件:
body
答案 0 :(得分:1)
您依赖LessonListBloc
但是BlocBuilder无法获取
情况是您在创建函数LessonListBloc-> Bloc中缩小类型
这将起作用
create(...)
LessonListBloc create(...)
这不会
Bloc create(...)
使用类型重写代码,而analisator将弹出类型不匹配错误
BlocProvider<LessonListBloc>(...