我有一个Cubit从API中获取数据。我想把它连接到UI上,所以我首先在这个小部件上添加了一个BlocProvider。这给了我一个错误,所以我用BlocProvider包装了这个BlocProvider,这个BlocProvider也产生了同样的错误。在那之后,我试着让它绕着我想要访问的路线,得到同样的结果。
MaterialApp(
debugShowCheckedModeBanner: false,
theme: getThemeData(),
onGenerateRoute: _router.generateRoutes,
initialRoute: _store.get('users', defaultValue: {}).isEmpty
? '/onboarding'
: '/dashboard',
);routes.dart
final PANCubit _panCubit = PANCubit(PANRepository());
Route<dynamic> generateRoutes(RouteSettings settings) {
switch (settings.name) {
// case '/':
// return MaterialPageRoute(builder: (context) => Home());
case '/':
case '/onboarding':
return MaterialPageRoute(
builder: (context) => BlocProvider.value(
value: _panCubit,
child: OnBoarding(),
),
);
...我想在UI中访问它:
OnBoardingView(
imagePath: process_svg,
titleWidget: BlocBuilder(
builder: (context, state) {
context.read<PANCubit>().getPANInformation(_panText.text);
if (state is PANLoading) {
return CircularProgressIndicator();
} else if (state is PANFetched) {
return Text(
'Hey ${state.panInformation.fullName}!',
style: Theme.of(context).textTheme.headline1,
);
} else {
return Text('Hmmm..Something went wrong.');
}
},
),
...发布于 2021-03-23 11:45:35
您需要精确确定要在BlocBuilder中访问哪个区块:
titleWidget: BlocBuilder<PANCubit, PANState>( // Replace PANState by the type of state
builder: (context, state) {
state.getPANInformation(_panText.text);
if (state is PANLoading) {
return CircularProgressIndicator();
} else if (state is PANFetched) {
return Text(
'Hey ${state.panInformation.fullName}!',
style: Theme.of(context).textTheme.headline1,
);
} else {
return Text('Hmmm..Something went wrong.');
}
},
),https://stackoverflow.com/questions/66761626
复制相似问题