如何在不同页面中设置应用程序主题数据?

时间:2018-09-18 03:56:55

标签: dart flutter

我的主页上有一个列表视图,如果单击它,它将移到新页面,第一个主题应该为蓝色,第二个主题数据应该为红色。 就像Facebook的Messenger中的聊天自定义功能一样。

1 个答案:

答案 0 :(得分:2)

您应该将Page小部件包装在Theme小部件内。如下所示:

@override
Widget build(BuildContext context) {
  return Theme(
    data: ThemeData(
      backgroundColor: Colors.red,
    ),
    child: Builder(
      builder: (context) {
        return YourPageWidget(context);
      }
    ),
  );
}

您应该注意一件事。使用Builder()将最新的context(包括在此新上下文中包括您的自定义主题数据)传递到子窗口小部件。

在某些情况下,如果不使用Builder,则YourPageWidget无法通过命令Theme.of(context)...获取正确的主题数据

有关更多信息,您可以参考文档Create unique ThemeData