flutter - flutter_bloc 找不到正确的提供程序
问题描述
我有一个从 API 获取数据的 Cubit。我想将它连接到 UI,所以我BlocProvider
首先在那个小部件的顶部添加了一个。这给了我一个错误,所以我用MaterialApp
BlocProvider 包装了同样的错误。之后,我尝试将它放在我想要访问它的路线周围,结果相同。
MaterialApp(
debugShowCheckedModeBanner: false,
theme: getThemeData(),
onGenerateRoute: _router.generateRoutes,
initialRoute: _store.get('users', defaultValue: {}).isEmpty
? '/onboarding'
: '/dashboard',
);
路线.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.');
}
},
),
...
解决方案
您需要确定要访问的区域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.');
}
},
),
推荐阅读
- flutter - Cocoapods 兼容性错误 - 运行 pod install 时出错
- excel - 如何复制一定数量的值,然后在 Excel 中更改为另一个
- ios - 如何在 react-native-webview 中使用 blob url 下载 pdf
- python-telegram-bot - Python Telegram Bot - 如何将 JSON response.content 作为 PDF 文件发送
- c# - 如何通过@Html.TextBoxFor 搜索产品,这个(@Html.TextBoxFor)在表格的一行中
- python - Python:无法替换列表中的项目,原因是:TypeError:列表索引必须是整数或切片,而不是 str
- r - 如何在ggplot2中导入手绘形状?(“ggplot2 图画书”)
- vim - 我已经按照存储库中的说明逐步在 Windows 中安装了 vim vundle,但是当我打开任何 vim 文件时出现错误
- swift - 如何获得返回的特定结构类型?
- javascript - 手风琴菜单不适用于 prettyphoto