【问题标题】:The argument type 'Stream<dynamic>?' can't be assigned to the parameter type 'Stream<QuerySnapshot<Object?>>?'参数类型 'Stream<dynamic>?'不能分配给参数类型'Stream<QuerySnapshot<Object?>>?'
【发布时间】:2021-10-28 05:44:47
【问题描述】:

我正在尝试从 firestore 获取文档,但我收到以下错误

'''

onsearchBtnClick() async {``

isSearching = false;
//setState(() {});
usersStream = await DatabaseMethods()
    .getUserByUserName(searchUsernameEditingController.text);
//setState(() {});}


Widget searchUsersList() {
return StreamBuilder<QuerySnapshot>(
  stream: usersStream,
  builder: (context, snapshot) {
    return snapshot.hasData
        ? ListView.builder(
            itemCount: snapshot.data!.docs.length,
            shrinkWrap: true,
            itemBuilder: (context, index) {
              DocumentSnapshot ds = snapshot.data!.docs[index];
              return Image.network(ds[index]);
            },
          )
        : Center(
            child: CircularProgressIndicator(),
          );
  },
);}Widget chatRoomsList() {
return Container();}

//数据库是

class DatabaseMethods {Future addUserInfoToDB(

  String userId, Map<String, dynamic> userInfoMap) async {
return FirebaseFirestore.instance
    .collection("users")
    .doc(userId)
    .set(userInfoMap);

}

{ Future getUserByUserName(String username) async {

return FirebaseFirestore.instance
    .collection("users")
    .where("username", isEqualTo: username)
    .snapshots();

} }

'''

【问题讨论】:

    标签: firebase flutter dart google-cloud-firestore


    【解决方案1】:

    尝试将getUserByUserName 的返回类型从Future&lt;Stream&gt; 更改为Stream&lt;QuerySnapshot&gt;,而不是将其分配给新变量,而是使用Stream,因为它是stream: DatabaseMethods().getUserByUserName(searchUsernameEditingController.text)

    【讨论】:

    • 在我这样改变之后,我得到了这些错误:参数类型'Type'不能分配给参数类型'Stream>?
    • 我想使用 snapshot.data.doc 从 firestore 中提取文档
    【解决方案2】:

    你应该删除 await in

    usersStream = await DatabaseMethods().getUserByUserName(searchUsernameEditingController.text);
    

    如果您将 await 用于快照,则它不再是流。

    return FirebaseFirestore.instance
        .collection("users")
        .where("username", isEqualTo: username)
        .snapshots();
    

    【讨论】:

      猜你喜欢
      • 2021-09-26
      • 2023-03-13
      • 2021-12-30
      • 2021-09-04
      • 1970-01-01
      • 1970-01-01
      • 2022-01-22
      • 2021-12-22
      • 2021-12-24
      相关资源
      最近更新 更多