如何在属性值之一更改后立即强制 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() 方法。
戈拉斯:
- 在
name
Live 小部件中更新值后,状态小部件会立即重建。 - 不要移动
turbo logic
到 Live 类并将其保留在 State 类中