我在 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('')
换句话说,你的结构是:
hasData
为 false
hasData
为 false
CircularProgress
hasData
为真时
hasData
为真时
对于第一次使用的用户,这将显示一个 CircularProgress
,然后是来自磁盘的数据,然后是在线数据。如果在线数据没有加载(没有网络),用户一直看到磁盘数据。
https://stackoverflow.com/questions/49752836/