从Firestore获取flutter firebase获取数组并将其分配给列表

时间:2020-07-25 18:13:29

标签: firebase flutter google-cloud-firestore

我在Firestore中有一个收藏集。它有一个字段数组,我正试图从Firestore获取该数组并将其分配给flutter中的列表。 我的收藏如下所示

enter image description here

我从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'类型的子类型

1 个答案:

答案 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的数据,则总是会得到类型不匹配的错误。希望这将使您对编程有所了解并获得一些基本概念。继续学习:)