我的主页上有一个列表视图,如果单击它将移动到新页面,第一个页面的主题应为蓝色,下一个页面的主题数据应为红色。就像 Facebook Messenger 中聊天自定义的工作原理一样。
您应该将页面小部件包装在主题小部件内。像下面这样:
@override
Widget build(BuildContext context) {
return Theme(
data: ThemeData(
backgroundColor: Colors.red,
),
child: Builder(
builder: (context) {
return YourPageWidget(context);
}
),
);
}
Run Code Online (Sandbox Code Playgroud)
您应该注意一件事。使用 aBuilder()将最新的context(包括此新上下文中的自定义主题数据)传递给子小部件。
如果不使用Builder,在某些情况下,YourPageWidget无法通过命令获取正确的主题数据Theme.of(context)...
更多信息,您可以参考文档创建唯一的ThemeData
| 归档时间: |
|
| 查看次数: |
3162 次 |
| 最近记录: |