我在Firestore中有一个收藏集。它有一个字段数组,我正试图从Firestore获取该数组并将其分配给flutter中的列表。 我的收藏如下所示
我从Firestore获取数据的代码
List<Offset> pointlist = <Offset>[];
getdata() async{
await Firestore.instance.collection("points").document('biZV7cepFJA8T6FTcF08').get().then((value){
setState(() {
List<Offset> pointlist = List.from(value.data['point']);
});
});
}
@override
void initState() {
super.initState();
getdata();
}
我得到此错误类型'String'不是'Offset'类型的子类型
答案 0 :(得分:1)
您做错的事情是:
// You have initialised your List as a Offset Object Type
List<Offset> pointList;
第二,如果您仔细查看该Firebase,则您分配的数据是
String
。
"Offset(x,y)"
最后,尝试将
String
的值分配给类型为List
的{{1}}
如果您想使事情正常运行,则可以使
Offset class/object
类型的List
并将其添加到String
List
或者首先像这样将数据添加到偏移对象中,然后将其传递到列表中
List<String> pointlist = List.from(value.data['point']);
摘要
始终查找要提供给List<Offset> pointList = <Offset>[];
getdata() async{
await Firestore.instance.collection("points").document('biZV7cepFJA8T6FTcF08').get().then((value){
setState(() {
// first add the data to the Offset object
List.from(value.data['point']).forEach((element){
Offset data = new Offset(element);
//then add the data to the List<Offset>, now we have a type Offset
pointList.add(data);
});
});
});
}
的数据类型,如果您尝试添加非List
类型T
的数据,则总是会得到类型不匹配的错误。希望这将使您对编程有所了解并获得一些基本概念。继续学习:)