【发布时间】:2021-09-29 13:37:18
【问题描述】:
我在一个项目中使用Flutter Bloc。
这是结构:
MultiBlocProvider(
providers: [
BlocProvider<BlocA>(
create: (context) {
return BlocA()
..add(FetchEvent());
},
),
BlocProvider<BlocC>(
create: (context) {
return BlocC()..add(FetchEvent());
},
),
],
child: IndexedStack(
index: _pageNum,
children: [
ChildA(),
ChildB(),
],
),
)
在ChildB 内部,我有一个Navigator.push() 到一个ChildC,其中BlocC 正在使用(BlocConsumer),但我收到了一个错误,
Flutter could not find the correct Provider above BlocConsumer<BlocC> Widget
编辑
ChildB 中有一个按钮,按下时导航到 ChildC。
喜欢,
TextButton( // this code exists inside a scaffold widget
child: Text("Page C"),
onPressed: () {
Navigator.push(context, CupertinoPageRoute(builder: (context) => ChildC()));
}
),
这是ChildC中的集团消费者
// Child C
Scaffold(
body: BlocConsumer<BlocC, CState>(
builder: (context, state) {
if(state is CSuccessState) {
return _body();
} else if (state is CLoadingState || state is CInitState) {
return Center(child: CircularProgressIndicator());
} else return Center(child: Text("Something went wrong"));
},
listener: (context, state) {},
),
);
编辑 2
我找到了this 的答案,显然,这是使用Navigator.push 时的问题。不过,如果有人知道如何解决我的问题,请告诉我
【问题讨论】:
-
能贴出BlocConsumer的代码吗?
-
您导航到使用 BlocC 的子 C?你能提供你导航到 ChildC 的部分吗
-
一个可能的原因是
ChildC不在MultiBlocProvider树内,在这种情况下,请考虑将您的 bloc 提供者移到更高的范围
标签: flutter bloc flutter-bloc