Navigator.push(): Error: Could not find the correct Provider above this Consumer Widget
Navigator.push(): Error: Could not find the correct Provider above this Consumer Widget
我正在尝试在我的 Flutter 应用程序中实现一些基本的状态管理。在小部件树的某处,我有一个用户的提供者。进一步向下的小部件可以使用消费者用户小部件访问用户。但是,一个小部件(下面代码片段中的小部件 B)是使用 Navigator.push() 构建的,无法访问用户。按下按钮将抛出错误:
Error: Could not find the correct Provider above this
Consumer Widget
floatingActionButton: FloatingActionButton(
child: Icon(Icons.play),
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => Consumer<User>(
builder: (context, user, child) => WidgetB(user: user),
),
),
);
},
),
如何在 WidgetB(或 WidgetB 的某些子 Widget)中访问用户?
确保您的提供程序设置在 MaterialApp 级别。例如,像这样:
void main() {
runApp(MultiProvider(
providers: [
ChangeNotifierProvider(
create: (_) => Provider1(),
),
ChangeNotifierProvider(
create: (_) => Provider2(),
),
],
child: MyApp(),
));
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: MainPage(),
);
}
}
我正在尝试在我的 Flutter 应用程序中实现一些基本的状态管理。在小部件树的某处,我有一个用户的提供者。进一步向下的小部件可以使用消费者用户小部件访问用户。但是,一个小部件(下面代码片段中的小部件 B)是使用 Navigator.push() 构建的,无法访问用户。按下按钮将抛出错误:
Error: Could not find the correct Provider above this Consumer Widget
floatingActionButton: FloatingActionButton(
child: Icon(Icons.play),
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => Consumer<User>(
builder: (context, user, child) => WidgetB(user: user),
),
),
);
},
),
如何在 WidgetB(或 WidgetB 的某些子 Widget)中访问用户?
确保您的提供程序设置在 MaterialApp 级别。例如,像这样:
void main() {
runApp(MultiProvider(
providers: [
ChangeNotifierProvider(
create: (_) => Provider1(),
),
ChangeNotifierProvider(
create: (_) => Provider2(),
),
],
child: MyApp(),
));
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: MainPage(),
);
}
}