【问题标题】:is not a subtype of type 'String' ..Retrieving 4 fields from firebase single collection不是“字符串”类型的子类型。从 Firebase 单个集合中检索 4 个字段
【发布时间】:2020-11-08 11:49:53
【问题描述】:

我正在尝试从 firebase 集合中获取 4 个字段(同一集合中的所有字段,每个文档都有这 4 个字段)到一个列表中,在本地获取数据后需要以不同的方式对其进行过滤

我收到此错误类型“speakerNamesModel”不是“String”类型的子类型。我的错误是什么?请给出示例代码。

    class speakerNamesModel {
    String speakerlanguage;
    String speakername_en;
    String speakername_lo;
    String speach_audiourl;
    speakerNamesModel(
    this.speakerlanguage, this.speakername_en,              this.speakername_lo, this.speach_audiourl);

    speakerNamesModel.fromJson(Map<dynamic, dynamic> parsedJSON)
    : speakerlanguage = parsedJSON['speakerlanguage'],
    speakername_en = parsedJSON['speakername_en'],
    speakername_lo = parsedJSON['speakername_lo'];
    speach_audiourl = parsedJSON['speach_audiourl'];
    }

    Future<List<speakerNamesModel>> getspeakerNamesList() async {
    QuerySnapshot qShot =
    await FirebaseFirestore.instance.collection                 ('speakernames').get();
    return qShot.docs
    .map((doc) => speakerNamesModel(
    doc.data()["speachdate"],     //timestamp data
    doc.data()["speakerlanguage"],//string
    doc.data()["speakername_en"], //name in roman letters string
    doc.data()["speakername_lo"],//name in local language unicode 
    doc.data()["speach_audiourl"],  //string
    ))
    .toList();
    }

    @override
    void initState() {
    getspeakerNamesList().then((List data) {
    setState(() {
    speakernames = filteredspeakernames = data;
    });
    });

【问题讨论】:

  • 这个错误发生在哪里?该代码似乎对我有用。 speakernames 和 'filteredspeakernames' 属于什么类型?
  • 我已经这样声明了 List speakernames = [];列出过滤的扬声器名称 = [];
  • 好的,你能说出错误发生在哪一行吗?它在哪里说type 'speakerNamesModel' is not a subtype of type 'String'
  • 谢谢你的线索给了我解决方案。像这样声明 List Speakernames; List 过滤的Speakernames;问题解决了。再次感谢。
  • 能否请您发布答案,以便其他人可以查看您如何解决它?

标签: firebase flutter google-cloud-firestore


【解决方案1】:

仅用于跟踪,正如@subramanian-v 所提到的,通过如下声明它们的变量来解决问题:

List<SpeakerNamesModel> Speakernames;
List<SpeakerNamesModel> filteredSpeakernames;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-23
    • 1970-01-01
    • 1970-01-01
    • 2020-01-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多