颤振子小部件正在使用错误的 Theme.of(context).color 重建
Posted
技术标签:
【中文标题】颤振子小部件正在使用错误的 Theme.of(context).color 重建【英文标题】:Flutter child widget is rebuilding with wrong Theme.of(context).color 【发布时间】:2022-01-20 09:06:40 【问题描述】:在更改颜色并设置整个屏幕的状态后,除了扩展磁贴(与您看到的列表视图具有相同的父级)之外,所有内容都使用正确的主题重建。扩展磁贴是我自己创建的小部件,我在其中复制了原始扩展磁贴的代码,只是更改了图标方向。 如果我切换到不同的选项卡并卷土重来,它会更新并具有正确的主题。 我正在使用 CupertinoTheme.of(context).barBackgroundColor,这适用于所有其他小部件,更新时效果很好。
enter image description here 这张图显示了底部的扩展图块在重建后仍然具有深色主题。
enter image description here 这张图显示了更新正常的 TodaysWorkoutListVIewBuilder() 和没有正确更新 Theme 的 TodaysCardioListViewBuilder()。
enter image description here 在这里,您可以看到 TodaysCardioListViewBuilder() 中的 ExpansionTile 的用法,当我在开始构建它时打印颜色时,我得到了正确的颜色(白色),但展开瓦片折叠的背景仍然是黑色。
如果您有任何想法我哪里出错了,请告诉我。
【问题讨论】:
【参考方案1】:我找到了解决方案,但如果有人遇到同样的问题,我会把它留在这里。
错误是 MyCupertinoExpansionTile
没有密钥,所以它没有重建。解决方案是只将参数键添加到小部件:
MyCupertinoExpansionTile(
key: UniqueKey(),
...
),
【讨论】:
以上是关于颤振子小部件正在使用错误的 Theme.of(context).color 重建的主要内容,如果未能解决你的问题,请参考以下文章