【发布时间】:2021-06-12 20:08:45
【问题描述】:
如何在某个属性值更改后立即强制重新构建 Widget? 一些伪代码:
class Live extends StatefulWidget {
String name;
Live(this.name);
@override
_LiveState createState() => _LiveState();
}
class _LiveState extends State<Live> {
// some turbo logic I don't want to move to Live class
..
@override
Widget build(BuildContext context) {
return Column(childrens: [
Text(widget.name),
Card(content calculated based on turbo logic),
]
);
}
}
当String name 属性更新时(基于父级的 setState 调用),一切都是实时发生的。更改会立即反映在 Text 小部件中。该值是立即可见的,因为我使用的是widget.name 调用,所以在built() 方法中我使用的是Live 类中的属性而不是状态。
问题是另一个被 Card 包裹的小部件被计算在标记为// some turbo logic I don't want to move to Live class 的地方。由于这个事实,当我想在本节中查看更新时,我需要切换选项卡并转到例如设置,然后返回实时选项卡以查看与卡片内容相关的更改。我相信它会再次触发 build() 方法。
戈拉斯:
- 在 Live 小部件中更新
name值后,状态小部件会立即重建。 - 不要将
turbo logic移动到 Live 类并保留在 State 类中
【问题讨论】:
标签: flutter dart flutter-state