【发布时间】: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