繁体   English   中英

Flutter QuerySnapshot:在 null 上调用了 getter 'docs'

[英]Flutter QuerySnapshot: The getter 'docs' was called on null

我收到错误“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"]不起作用,我收到此错误以及如何解决它,请帮忙!

要重建与 state 更改同步的 UI,我们应该使用 state 管理,最简单的是StatefulWidgetsetState() function :

QuerySnapshot _querySnapshot;

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

并处理_querySnapshot仍为null的情况:

 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"],
          );
        }
    );
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM