Geo*_*ios 6 flutter flutter-provider flutter-bloc
我刚刚将我的flutter_bloc库更新为以下6.1.1状态:
bloc' 已弃用,不应使用。改用 context.read 或 context.watch。将在 v7.0.0 中移除。尝试使用替换来替换已弃用成员的使用。
这是我必须更改的部分代码:
class ContractSubscriptionForm extends StatelessWidget {
final ContractSubscription contractSubscription;
const ContractSubscriptionForm(this.contractSubscription, {Key key})
: super(key: key);
@override
Widget build(BuildContext context) {
return BlocProvider(
create: (context) => ContractSubscriptionFormBloc(
contractSubscription,
context.read<CoursesGroupBloc>().state.coursesGroupList, // <---change to .read()
),
child: SubscriptionFormBody(),
);
}
}
Run Code Online (Sandbox Code Playgroud)
我确实改变的部分是这样的:context.bloc<CoursesGroupBloc>().state.coursesGroupList,到context.read<CoursesGroupBloc>().state.coursesGroupList,并且现在正在工作。
在该.read()函数的文档中,我阅读了以下内容:
这种方法与[watch]相反。当值改变时,它不会重新生成widget,并且不能在[StatelessWidget.build]/[State.build]中调用。另一方面,它可以在这些方法之外自由调用。
出于某种原因,这是没有意义的,因为上面的代码在buildStatelessWidget 的a 中,并且正在处理.read()函数而不是.watch().
我错过了什么吗?
您没有在 StatelessWidget 的构建中调用 context.read ,而是在创建 ContractSubscriptionFormBloc 期间在 BlocProvider 中调用了 context.read 。如果您尝试执行以下操作:
class example extends StatelessWidget {
@override
Widget build(BuildContext context) {
context.read<CoursesGroupBloc>().state.coursesGroupList;
//the rest of your code
}
}
Run Code Online (Sandbox Code Playgroud)
将出现此错误:尝试在提供者的方法或回调context.read<bloc>中使用buildupdate
| 归档时间: |
|
| 查看次数: |
5192 次 |
| 最近记录: |