【问题标题】:.Error in Streambuilder for flutter firestore note app. Flutter Firestore note 应用程序的 Streambuilder 中的错误
【发布时间】:2021-08-07 16:18:45
【问题描述】:

错误:1.参数类型'Stream'不能分配给参数类型'Stream>?'。 2.参数类型“对象?”不能分配给参数类型“bool”。 3.位置参数太多:预期为 0,但找到了 1。 尝试删除额外的参数。 任务流-

DatabaseServices().getTasks(uId).then((val){
    taskstream=val;
    });

Widget taskList(){

    return StreamBuilder<QuerySnapshot>(
      stream: taskstream,//error 1
      builder: (context, snapshot){
        return snapshot.hasData ?
        ListView.builder(
          padding: EdgeInsets.only(top: 16),
          itemCount: snapshot.data!.docs.length,
            shrinkWrap: true,
            itemBuilder: (context, index){
              return TaskTile(
                snapshot.data!.docs[index].data["isCompleted"],//3 and 2
                snapshot.data!.docs[index].data["task"],//3
                snapshot.data!.docs[index].documentID,
              );
            }) : Container();
      },
    );

数据库gettask函数-

getTasks(String userId) async {
    return await FirebaseFirestore.instance.collection("users")
        .doc(userId)
        .collection("tasks")
        .snapshots();
  }

class TaskTile
class TaskTile extends StatefulWidget {
  final bool isCompleted;
  final String task;
  final String documentId;
  TaskTile(this.isCompleted, this.task, this.documentId);

  @override
  _TaskTileState createState() => _TaskTileState();
}

【问题讨论】:

  • 你用的是什么版本的firestore,taskStream等于什么?
  • 另外,如果你分享你的taskstream,它会更容易提供帮助。

标签: firebase flutter google-cloud-firestore


【解决方案1】:

转到您定义taskstream 的位置,并将其定义为Stream&lt;QuerySnapshot&gt;。然后在您的小部件中,执行以下操作:

Widget taskList(){

    return StreamBuilder<QuerySnapshot>(
      stream: taskstream,
      builder: (context, snapshot){
        return snapshot.hasData ?
        ListView.builder(
          padding: EdgeInsets.only(top: 16),
          itemCount: snapshot.data!.docs.length,
            shrinkWrap: true,
            itemBuilder: (context, index){
              return TaskTile(
                snapshot.data!.docs[index].data.get("isCompleted"),
                snapshot.data!.docs[index].data.get("task"),
                snapshot.data!.docs[index].documentID,
              );
            }) : Container();
      },
    );

【讨论】:

  • 谢谢先生!正如你所说,错误已经消失,但现在我收到了一个迟到的初始化错误:字段'taskstream'在运行时没有被初始化。如果你能说出一个查看问题中代码的方法,我将不胜感激。 ..供您参考,任务流已经写成类似后期的 Stream taskstream;在赋值之前
  • 不客气,请分享流的代码。但是你可以删除后期并编写你的代码,比如 collection.doc.snapshots
猜你喜欢
  • 2021-02-26
  • 2020-10-01
  • 2021-11-14
  • 2020-12-18
  • 2021-05-23
  • 2020-05-28
  • 2020-06-07
  • 1970-01-01
  • 2022-11-17
相关资源
最近更新 更多