【发布时间】:2021-08-22 14:33:33
【问题描述】:
我有一个bool fetchNew。它被初始化为 false,我有一个函数 refresh() 将其设置为 true。如何在 setState 阻止重新渲染后立即将其设置为 false?
class _DashboardState extends State<Dashboard> {
bool fetchNew = false;
@override
void initState() {
super.initState();
}
refresh() {
setState(() {
fetchNew = true;
});
}
@override
Widget build(BuildContext context) {
return Container();
}
}
我认为 initState() 会在重新渲染后再次将其设置为 false,但我理解 initState 的方式是它只会触发一次以将小部件注入小部件树。
【问题讨论】:
-
您想将其设置为 true 仅 1 秒,然后再次将其更改为 false?
-
基本上是的。 setState 重新呈现小部件。我只是希望它在设置为真后立即为假,这样它就不会重新渲染两次。我找不到任何可以实现这一目标的颤振生命周期。类似于在重新渲染后更改状态而不再次重新渲染。
-
只需在
setState()后添加fetchNew = false在您的refresh()函数中。
标签: flutter state rendering setstate