提供程序错误:在此MyApp小部件上方找不到正确的Provider <Color>

时间:2019-12-07 20:05:02

标签: flutter

我不明白为什么以下代码会产生错误? 根据我的说法,提供者是MaterialApp的祖先,应该起作用吗?我想念什么?

class MyApp extends StatelessWidget {
  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MultiProvider(
      providers: [
        new Provider<Color>(create: (_) => Colors.amber)
      ],
      child: MaterialApp(
        title: 'Flutter Demo',
        theme: ThemeData(
          primarySwatch: Provider.of<Color>(context),
        ),
        home: MyHomePage(title: 'Flutter Demo Home Page'),
      )
    );
  }
}

1 个答案:

答案 0 :(得分:0)

提供程序最初是在build方法中提供的。您无法使用提供者值,因为提供者在其上下文中,但是您尝试在同一位置使用provider.of(context)。如果您使用其他状态(视图),则应使用它。

示例代码:https://gist.github.com/VB10/358dc944e5a86b58db2d898eaa1b5ea6

provider sample