【问题标题】:Flutter - How do I change a value straight after I setStateFlutter - 如何在 setState 后立即更改值
【发布时间】: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


【解决方案1】:

你可以试试这个吗?

setState(() {
  fetchNew = true;
  Future.delayed(Duration(milliseconds: 100, () {
     fetchNew = false;
  });
});

【讨论】:

    猜你喜欢
    • 2021-08-18
    • 2020-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-12
    • 1970-01-01
    • 2016-06-15
    • 1970-01-01
    相关资源
    最近更新 更多