Flutter QuerySnapshot:getter 'docs' 被调用为 null



我得到错误"NoSuchMethodError:在null上调用了getter"docs"带有以下代码:

QuerySnapshot querySnapshot;
initiateSearch() {
databaseMethods
.getUserByUsername(searchTextEditingController.text)
.then((val) {
querySnapshot = val;
});
}
Widget searchList() {
return ListView.builder(
itemCount: querySnapshot.docs.length,
itemBuilder: (context, index) {
return SearchTile(
userName: querySnapshot.docs[index].data()["name"],
userEmail: querySnapshot.docs[index].data()["email"],
);
}
);
}

如果有人知道querySnapshot.docs[index].data()["name"]不工作的原因,并且我收到了这个错误以及如何修复它,请帮助!

要重建与状态更改同步的UI,我们应该使用状态管理,最简单的是StatefulWidget:的setState()功能

QuerySnapshot _querySnapshot;
initiateSearch() {
databaseMethods
.getUserByUsername(searchTextEditingController.text)
.then((val) {
setState(() {
_querySnapshot = val;
});
});
}

并处理_querySnapshot仍然为空的情况:

Widget searchList() {
if (_querySnapshot == null) return CircularProgressIndicator();
return ListView.builder(
itemCount: _querySnapshot.data.docs.length,
itemBuilder: (context, index) {
return SearchTile(
userName: _querySnapshot.data.docs[index]["name"],
userEmail: _querySnapshot.data.docs[index]["email"],
);
}
);
}

最新更新