gpt4 book ai didi

flutter - Dart 方法未调用

转载 作者:行者123 更新时间:2023-12-03 04:47:10 25 4
gpt4 key购买 nike

我在带有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),
);
}

}

现在,当我想将create的函数返回类型更改为 Bloc时,订阅者小部件(即由LessonListBloc侦听的LessonsListLoaded是 yield)不会传递给 body小部件:

Bloc create(BuildContext context) {
final dao = Provider.of<LessonsDao>(context, listen: false);
return LessonListBloc(dao)..add(LoadListEvent());
}

最佳答案

您取决于LessonListBloc

但是BlocBuilder无法获取

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

这会工作

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

这不会
Bloc create(...)

用类型重写代码,而analisator将弹出类型不匹配错误
BlocProvider<LessonListBloc>(...

关于flutter - Dart 方法未调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62076633/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com