飞镖方法未调用

时间:2020-05-29 00:19:57

标签: flutter dart bloc

在带有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

1 个答案:

答案 0 :(得分:1)

您依赖LessonListBloc

但是BlocBuilder无法获取

情况是您在创建函数LessonListBloc-> Bloc中缩小类型

这将起作用

create(...)
LessonListBloc create(...)

这不会

Bloc create(...)

使用类型重写代码,而analisator将弹出类型不匹配错误

BlocProvider<LessonListBloc>(...