firebase - Flutter QuerySnapshot:在 null 上调用了 getter 'docs'
问题描述
我收到错误“NoSuchMethodeError:在 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,我们应该使用状态管理,最简单的是setState()
a 的功能StatefulWidget
:
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"],
);
}
);
}
推荐阅读
- linux - 如何找到固定到同一个核心的多个进程?
- python - 如何在 pandas 数据框列中找到已知值的索引?
- python - python 有时会在运行时重新导入模块吗?
- python - Pyqt 的 Python input() 替代方法,用于从硬件键盘读取字符串
- javascript - 如何使 HTML 日历始终对用户可见
- android - Android将本地应用程序数据库文件复制到内部设备内存文件夹
- wordpress - Wordpress - 高级自定义字段块:退出时不触发渲染预览
- django - Django Import-export TypeError: clean() got an unexpected keyword argument 'row'
- google-cloud-platform - 在 BigQuery 中更改具体化视图会导致“意外语句”
- python - 使用参数 pyqt5 线程化一个类