不是类型为';字符串'。。从firebase单个集合中检索4个字段

不是类型为';字符串'。。从firebase单个集合中检索4个字段,firebase,flutter,google-cloud-firestore,Firebase,Flutter,Google Cloud Firestore,我试图从firebase集合中获取4个字段(同一集合中的所有字段,每个文档都有这4个字段)到一个列表中,该列表在本地获取数据后需要以不同的方式进行过滤 我得到的错误类型“SpeakerNameModel”不是“String”类型的子类型。我犯了什么错?请给出一个示例代码 class speakerNamesModel { String speakerlanguage; String speakername_en; String speakername_lo;

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

我得到的错误类型“SpeakerNameModel”不是“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;
    });
    });
class SpeakerNameModel{
字符串说话人语言;
字符串speakername_en;
字符串speakername_lo;
字符串speach_audiourl;
扬声器模型(
this.speakerlanguage,this.speakername_en,this.speakername_lo,this.speach_audiourl);
speakerNameModel.fromJson(Map parsedJSON)
:speakerlanguage=parsedJSON['speakerlanguage'],
speakername_en=parsedJSON['speakername_en'],
speakername_lo=parsedJSON['speakername_lo'];
speach_audiourl=parsedJSON['speach_audiourl'];
}
Future GetSpeakerNameList()异步{
QuerySnapshot qShot=
等待FirebaseFirestore.instance.collection('speakernames').get();
返回qShot.docs
.map((doc)=>SpeakerNameModel(
doc.data()[“speachdate”],//时间戳数据
doc.data()[“speakerlanguage”],//字符串
doc.data()[“speakername_en”],//名称(罗马字母字符串)
doc.data()
doc.data()[“speach\u audiourl”],//字符串
))
.toList();
}
@凌驾
void initState(){
GetSpeakerNameList()。然后((列表数据){
设置状态(){
speakernames=filteredspeakernames=data;
});
});

只是为了跟踪,正如@subramanian-v所提到的,通过如下声明变量,问题得以解决:

列出扬声器名称;
列出filteredSpeakernames;

此错误发生在何处?代码似乎对我有效。speakernames和'filteredspeakernames'是什么类型的?我已声明如下:List speakernames=[];List filteredspeakernames=[];好的,你能告诉我错误发生在哪一行吗?它在哪里说,
类型'speakernamemodel'不是类型'String'的子类型。
?谢谢你的线索给了我解决方法。在声明类似于此的列表Speakernames;列表filteredSpeakernames;问题解决了。再次感谢。你能发布答案以便其他人查看吗你是怎么解决的?