如何解决FutureBuilder的快照始终为null或没有数据
我很陌生,希望这个问题可以轻松解决,但是直到现在我还不知道出了什么问题。
我有一个应用,希望在按下搜索按钮后返回用户列表。我认为带有ListView.builder的FutureBuilder是对此的正确选择,但是即使我的异步函数肯定可以找到结果,我也无法以某种方式使我的数据出现在FutureBuilder中。 我的未来:
Future<List<Map<dynamic,dynamic>>> results;
按钮:
onPressed: () {
if (_formKey.currentState.validate()) {
_formKey.currentState.save();
setState(() {
results = null;
searched = true;
});
results = getGuestData(widget.place['placeName'],query);
}
},
异步功能:
Future<List<Map>> getGuestData(String placeName,Map query) async {
List<Map> result = [];
CollectionReference guestsRef = Firestore.instance
.collection(XXX)
.document(XXX)
.collection(XXX);
if (query['date'] == null) {
guestsRef
.where('lastName',isEqualTo: query['lastName'])
.where('firstName',isEqualTo: query['firstName'])
.getDocuments()
.then((doc) {
if (doc != null) {
result = doc.documents.map((x) => x.data).toList(); \\debugger shows this is working
}
}).catchError((e) => print("error fetching data: $e"));
}
return result;
最后是问题:
FutureBuilder<List<Map>>(
future: results,builder: (context,snapshot) {
if (snapshot.connectionState == ConnectionState.done) {
List guests = snapshot.data;
return ListView.builder(
shrinkWrap: true,itemCount: guests.length,itemBuilder: (context,index) {
return ListTile(
... //do stuff here
);
},);
} else {
return CircularProgressIndicator();
}
},)
snapshot.data实际上确实是一个列表,但是尽管getGuestData查询找到了用户,但是大小始终为0。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。