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

use*_*349 7 dart flutter

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

Ha *_*anh 9

您应该将页面小部件包装在主题小部件内。像下面这样:

@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