我不明白为什么以下代码会产生错误? 根据我的说法,提供者是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'),
)
);
}
}
答案 0 :(得分:0)
提供程序最初是在build方法中提供的。您无法使用提供者值,因为提供者在其上下文中,但是您尝试在同一位置使用provider.of(context)。如果您使用其他状态(视图),则应使用它。
示例代码:https://gist.github.com/VB10/358dc944e5a86b58db2d898eaa1b5ea6