我正在尝试在Flutter应用中实施一些基本的状态管理。在小部件树的某个位置,我有一个供用户使用的提供程序。进一步向下的小部件可以使用“使用者用户小部件”访问用户。但是,使用Navigator.push()构建了一个Widget(下面代码中的WidgetB),无法访问用户。按下按钮将引发错误:
错误:在此上方找不到正确的提供者 消费者小工具
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)中访问用户?
答案 0 :(得分:5)
确保您的提供者设置在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(),
);
}
}