【问题标题】:Flutter: How to make a widget disappear after a few seconds?Flutter:如何使小部件在几秒钟后消失?
【发布时间】:2020-10-18 21:47:20
【问题描述】:

我想让我的小部件在几秒钟后消失,但它一直在等待。

if (unread != 0 && (getMessageObjects.length - count) == unread - 1) {
          _groupedMessages.add(
            FutureBuilder(
              future: Future.delayed(Duration(milliseconds: 500)),
              builder: (c, s) => s.connectionState == ConnectionState.done
                  ? Container(
                      child: Chip(
                        label: Text('Finished'),
                      ),
                    )
                  : Center(
                      child: Chip(
                        label: Text('${unread.toString()} unread messages'),
                      ),
                    ),
            ),
          );
          // reset
        }

_groupedMessages 是一个列表。我不知道是否有其他方法,但如果有,请告诉我。

【问题讨论】:

  • 看起来不是一个好的代码,为什么你要列出这样的 FutureBuilder 列表?
  • 显示他们有多少未读邮件的指示器。该列表是 List,将显示在 listview.builder 中。小部件列表包含 MessageObjects 小部件,通过获取未读消息的数量,使用未读消息的计数作为索引,一个新的 FutureBuilder 小部件用于指示未读消息的开始位置。

标签: flutter flutter-layout flutter-test


【解决方案1】:

您的代码看起来很奇怪,但我们需要查看其余代码。

首先想到的是,你确定未来不是不断地重新创造,因此没有机会完成吗?

您要显示一条消息,指出 500 毫秒的计数然后隐藏它,这似乎也很奇怪。

还有为什么人为的延迟?

我猜你需要从服务器获取计数,在这种情况下,future 应该包含对服务器的调用,并在返回结果时完成。

我希望 UI 显示一条消息“正在获取消息”,然后在获取完成后更改为“未读消息 x”。

但鉴于您提供的上下文数量有限,这些只是猜测。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-06
    • 1970-01-01
    • 2013-08-26
    • 1970-01-01
    • 1970-01-01
    • 2014-01-10
    • 2021-05-12
    • 1970-01-01
    相关资源
    最近更新 更多