Flutter 子部件正在用错误的 Theme.of(context).color 重建
Flutter child widget is rebuilding with wrong Theme.of(context).color
更改颜色并设置整个屏幕的状态后,除了扩展磁贴(它与您看到的列表视图具有相同的父级)外,所有内容都以正确的主题重建。扩展图块是我自己创建的小部件,我在其中复制了原始扩展图块的代码,只是更改了图标方向。
如果我切换到不同的选项卡并返回,它会更新并具有正确的主题。
我正在使用 CupertinoTheme.of(context).barBackgroundColor,这适用于所有其他小部件,更新时效果很好。
enter image description here
此图显示底部的扩展图块在重建后仍然具有深色主题。
enter image description here
此图片显示了 TodaysWorkoutListVIewBuilder(),它更新得很好,而 TodaysCardioListViewBuilder() 没有正确更新主题。
enter image description here
在这里,您可以看到 TodaysCardioListViewBuilder() 中 ExpansionTile 的用法,当我在构建开始时打印颜色时,我得到了正确的颜色(白色),但 Expansion Tile 折叠背景仍然是黑色。
如果您对我的错误有任何想法,请告诉我。
我找到了解决方案,但会把它留在此处以防有人遇到同样的问题。
错误是 MyCupertinoExpansionTile
没有密钥,所以它没有重建。解决方案是将参数键添加到小部件:
MyCupertinoExpansionTile(
key: UniqueKey(),
...
),
更改颜色并设置整个屏幕的状态后,除了扩展磁贴(它与您看到的列表视图具有相同的父级)外,所有内容都以正确的主题重建。扩展图块是我自己创建的小部件,我在其中复制了原始扩展图块的代码,只是更改了图标方向。 如果我切换到不同的选项卡并返回,它会更新并具有正确的主题。 我正在使用 CupertinoTheme.of(context).barBackgroundColor,这适用于所有其他小部件,更新时效果很好。
enter image description here 此图显示底部的扩展图块在重建后仍然具有深色主题。
enter image description here 此图片显示了 TodaysWorkoutListVIewBuilder(),它更新得很好,而 TodaysCardioListViewBuilder() 没有正确更新主题。
enter image description here 在这里,您可以看到 TodaysCardioListViewBuilder() 中 ExpansionTile 的用法,当我在构建开始时打印颜色时,我得到了正确的颜色(白色),但 Expansion Tile 折叠背景仍然是黑色。
如果您对我的错误有任何想法,请告诉我。
我找到了解决方案,但会把它留在此处以防有人遇到同样的问题。
错误是 MyCupertinoExpansionTile
没有密钥,所以它没有重建。解决方案是将参数键添加到小部件:
MyCupertinoExpansionTile(
key: UniqueKey(),
...
),