gpt4 book ai didi

dart - Flutter:在第一次加载时将数据预加载到 Firestore 本地缓存中

转载 作者:IT老高 更新时间:2023-10-28 12:41:16 26 4
gpt4 key购买 nike

我在 Flutter 应用中实现了 Cloud Firestore,但遇到了这个问题:如果在第一次加载应用时(安装后)没有网络连接,则不会显示任何数据。我的问题是:如何让 Firestore 中的数据在第一次加载(安装后)时显示,即使没有互联网连接?我获取数据的代码是这样的:

class QuestionsListState extends State<QuestionsList> {
@override
Widget build(BuildContext context) {

return new StreamBuilder<QuerySnapshot>(
stream: _questionsCollectionReference
.where("category", isEqualTo: _chosenCategory).orderBy("order").snapshots,
builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) {
if (!snapshot.hasData) return const Text('');
final int messageCount = snapshot.data.documents.length;
return new ListView.builder(
itemCount: messageCount,
itemBuilder: (_, int index) {
final DocumentSnapshot document = snapshot.data.documents[index];
return new ListTile(
title: new FlatButton(
onPressed: () {
Navigator.push(context, new MaterialPageRoute(
builder: (BuildContext context) => new AddAnswerDialog(),
fullscreenDialog: true,
));
},
child: new Text(
document['text'],
style: new TextStyle(fontSize: 18.0, color: Colors.blue),
)),
);
},
);
},
);
}
}

最佳答案

我遇到了类似的情况。我的解决方案是使用 FutureBuilder 而不是 const Text('')

从磁盘加载该数据

换句话说,你的结构是:

  • StreamBuilder
    • hasData 为 false
      • FutureBuilder
        • hasData 为 false
          • 显示一个CircularProgress
        • hasData 为真时
          • 显示磁盘数据
    • hasData 为真时
      • 显示在线数据

对于第一次使用的用户,这将显示一个 CircularProgress,然后是来自磁盘的数据,然后是在线数据。如果在线数据没有加载(没有网络),用户一直看到磁盘数据。

关于dart - Flutter:在第一次加载时将数据预加载到 Firestore 本地缓存中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49752836/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com