【问题标题】:The return type 'List<dynamic>' isn't a 'List<Entry>', as required by the closure's context根据闭包上下文的要求,返回类型“List<dynamic>”不是“List<Entry>”
【发布时间】:2021-09-02 09:30:47
【问题描述】:
import 'dart:html';

import 'package:cloud_firestore/cloud_firestore.dart';

class FirestoreService {
  FirebaseFirestore _db  = FirebaseFirestore.instance;

  //Get Entries
  Stream<List<Entry>> getEntries() {
    return _db
        .collection('entries')
        .snapshots()
        .map((snapshot) => snapshot.docs
        .map((doc) => Entry.fromJson(doc.data()))
        .toList());
  }


  //Create


  //Update



  //Delete


}

嗨,这是我的代码我收到这个错误,它说返回类型 List(dynamic) 不是 List(Entry),这是闭包上下文所要求的。如何纠正这种情况? 谢谢

【问题讨论】:

  • 您是否尝试过为map 提供类型参数? .map&lt;Entry&gt;((doc) =&gt; Entry.fromJson(doc.data()))
  • 用动态替换条目
  • 我做了同样的事情。现在它说没有为“Entry”类型定义方法“fromJson”。 @RaulSauco
  • @p2kr 抱歉,我无法理解您的意思。你能详细说明我应该在哪里用动态替换条目
  • 将 List 替换为 List

标签: android ios flutter google-cloud-firestore


【解决方案1】:

通过提供类型给map一些帮助:

.map<Entry>((doc) => Entry.fromJson(doc.data()))

整个方法是:

//Get Entries
Stream<List<Entry>> getEntries() {
  return _db
    .collection('entries')
    .snapshots()
    .map((snapshot) => snapshot.docs
    .map<Entry>((doc) => Entry.fromJson(doc.data()))
    .toList());
}

您的方法返回一个List&lt;Entry&gt;,但返回表达式返回一个List&lt;dynamic&gt;,除非您将结果显式转换为Entry

添加类型应该可以解决问题。

【讨论】:

    猜你喜欢
    • 2021-08-07
    • 2022-01-12
    • 2021-08-26
    • 2021-10-29
    • 2021-05-04
    • 2021-06-27
    • 1970-01-01
    • 2020-10-14
    • 2021-07-08
    相关资源
    最近更新 更多