Flutter/Dart:如何不使用双点运算符改写方法调用代码?
问题解决:不使用级联运算符改写BlocProvider创建代码
你的写法有两个关键错误:
create回调必须返回一个ManageCostCubit实例,但你的代码没有返回语句,导致回调返回void,不符合要求- 在
create内部还未将cubit注入到context中,调用context.read<ManageCostCubit>()找不到对应的实例
正确的改写方式是先创建cubit实例,调用目标方法后再返回该实例:
@override Widget build(BuildContext context) { return BlocProvider( create: (context) { final cubit = ManageCostCubit(fakeLocalRepository); cubit.getAllCost(); return cubit; }, child: MaterialApp( // 补全你的MaterialApp剩余代码 ), ); }
这种写法既避开了级联运算符,又满足BlocProvider对create回调的返回值要求,同时能正常调用getAllCost()方法。
内容的提问来源于stack exchange,提问作者Rasputin221
相关产品推荐
相关产品推荐

