【问题标题】:Flutter Error - "Closure call with mismatched arguments: function '[]' Receiver: Closure: () => Map<String, dynamic> from Function 'data':"颤振错误-“参数不匹配的闭包调用:函数'[]'接收器:闭包:()=> Map<String,dynamic>来自函数'data':”
【发布时间】:2021-02-22 19:10:49
【问题描述】:

我在 Flutter 应用上显示来自 Firestore 的数据时遇到了这个问题

错误:

Closure call with mismatched arguments: function '[]'
Receiver: Closure: () => Map<String, dynamic> from Function 'data':.
Tried calling: []("quizImgUrl")
Found: []() => Map<String, dynamic>

我的代码:

  Widget QuizList() {
    return Container(
      child: StreamBuilder(
        stream: quizStream,
        builder: (context, snapshot) {
          return snapshot.data == null
              ? Container()
              : ListView.builder(
                  itemCount: snapshot.data.documents.length,
                  itemBuilder: (context, index) {
                    snapshot.data.documents
                        .map((doc) => new ListTile(
                            title: new Text(doc["quizTitle"]),
                            subtitle: new Text(doc["quizImgUrl"].toString())))
                        .toList();
                    return QuizTile(
                      imgUrl: snapshot.data.documents[index].data['quizImgUrl'],
                      desc: snapshot
                          .data.documents[index].data['quizDescription'],
                      title: snapshot.data.documents[index].data['quizTitle'],
                    );
                  });
        },
      ),
    );
  }

数据库代码:

  Future<void> addQuestionData(Map questionData, String quizId) async {
    await FirebaseFirestore.instance
        .collection("Quiz")
        .doc(quizId)
        .collection("QNA")
        .add(questionData)
        .catchError((e) {
      print(e);
    });
  }

Full code

【问题讨论】:

标签: firebase flutter dart google-cloud-firestore flutter-layout


【解决方案1】:

好的,你需要先调用 data() 方法。然后你可以得到索引项的值。应该是这样的:

      return QuizTile(
                  imgUrl: snapshot.data.documents[index].data()["quizImgUrl"],
                  desc: snapshot
                      .data.documents[index].data()["quizDescription"],
                  title: snapshot.data.documents[index].data()["quizTitle"],
                );

【讨论】:

    猜你喜欢
    • 2021-06-21
    • 2021-01-15
    • 2021-01-26
    • 1970-01-01
    • 2022-12-21
    • 2021-12-09
    • 2021-12-10
    • 2021-09-29
    • 2013-12-01
    相关资源
    最近更新 更多