Flutter FutureBuilder/Stream 如何根据给定时间在 ConnectionState.waiting 中显示 2 个不同的小部件

Flutter FutureBuilder/Stream how to show 2 different widgets in ConnectionState.waiting depending on given time

我想在 ConnectionState.waiting 的第一秒显示一个 Text() 小部件,但如果时间超过一秒,我想显示一个带有自定义动画的不同小部件。

简化代码(StatelessWidget):

...
Stream
...
if (snapshot.connectionState == ConnectionState.waiting) {
                    return Text('Loading data');
                    return CustomWidget(); <- Show this widget instead of Text if more than 1 sec
                  }

不知道这是不是你需要的

首先定义一个DateTime变量:

DateTime time = DateTime.now();

然后在您的构建方法中设置当前日期时间:

@override
  Widget build(BuildContext context) {
    time = DateTime.now();

然后在您的结果中,您可以像这样使用当前日期时间检查“时间”变量:

if (snapshot.connectionState == ConnectionState.waiting) {
  if (DateTime.now().difference(time).inSeconds>10){
    return Text("More than 10 seconds");
  }
  else {
    return Text('Less than 10 seconds');
  }
}