flutter - 在此 MyApp 小部件上方找不到正确的提供程序
问题描述
我正在尝试在MaterialApp
. 我有一个MultiProvider
which 是MaterialApp
.
当我尝试访问提供程序时,出现以下错误:
错误:在此 MyApp 小部件上方找不到正确的提供程序
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MultiProvider(
providers: [
ChangeNotifierProvider<RoutesProvider>(create: (context) => RoutesProvider()),
...
],
child: MaterialApp(
title: 'coolApp',
// key: Provider.of<RoutesProvider>(context, listen: false).mainKey,
initialRoute: '/home',
routes: <String, WidgetBuilder>{...routes},
),
);
}
}
解决方案
遵循以下结构,ChangeNotifierProvider.value
是分配提供者的正确方法
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MultiProvider(
providers: [
ChangeNotifierProvider.value(value: RoutesProvider()),
//.....
],
child: MaterialApp(
推荐阅读
- python - 在 Python Tkinter 中,如何在 mainloop 窗口打开后运行代码?
- c++ - 如何正确使用重载的“运算符<<”?
- javascript - 设置从 componentDidMount 中的操作接收的状态数据
- firebase - Firebase - 为 1 个项目中的客户端/服务器设置重写功能
- laravel - 在 Laravel 6 中保存多对多关系
- c++ - 二叉搜索树的 c++ 实现中的 EXC_BAD_ACCESS 错误
- java - 微服务:没有使用 Spring API 网关的服务发现
- python - TypeError:需要一个类似字节的对象,而不是 'str' 'xxx';'xxx'
- python - Tokenizer() 中相同频率词的排名标准和 Tokenizer().texts_to_matrix() 在 Keras 中的工作
- python - TF Object Detection API:将指标保存到磁盘