【发布时间】:2020-10-24 10:52:14
【问题描述】:
这里是从 firebase 实时数据库加载数据到列表的 sn-p 代码:
var CategoryName = FirebaseDatabase.instance.reference().child('CategoryNames').once()
.then((DataSnapshot dataSnapshot){
var key = dataSnapshot.value.keys;
for(var i in key)
{
// print(dataSnapshot.value[i]['Name']);
CategoriesOnly categoriesOnly = new CategoriesOnly(
dataSnapshot.value[i]['Name']
);
categoriesOnlyList.add(categoriesOnly);
}
setState(() {
print(categoryItemList.length);
});
});
我将这些数据存储到一个列表中并将它们显示到 ListView.builder 中。 我想在数据完全加载后显示屏幕,同时它显示某种加载小部件或加载屏幕,但在我的情况下,屏幕看起来是空白的,一段时间后它会显示数据。如果互联网连接速度很慢,则会出现一分钟的空白屏幕并加载它(因为我的数据也包含图像)。而且我还想如果加载时间超过某个特定时间,它将显示尝试重新加载或互联网连接错误。请帮忙。
【问题讨论】:
-
@ChristopherMoore,我可以添加延迟并显示加载小部件,但我如何知道数据何时完全加载。假设我使用了 5 秒延迟,而网速快的人必须等待 5 秒,而网速慢的人即使在 5 秒后也无法看到数据。
-
你永远不应该故意添加延迟。这样做没有真正的目的。正如我所说,您应该查看
FutureBuilder。您从Future获取数据的当前方式并不理想且混乱。
标签: flutter dart firebase-realtime-database