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

Rav*_*ddy 5 firebase flutter google-cloud-firestore

我在 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();
  }
Run Code Online (Sandbox Code Playgroud)

我收到此错误类型“String”不是“Offset”类型的子类型

Alo*_*lok 5

你做错的事情是这样的:

// You have initialised your List as a Offset Object Type
List<Offset> pointList;
Run Code Online (Sandbox Code Playgroud)

String其次,如果您仔细查看该 firebase,则您分配的数据是 a 。

"Offset(x,y)"
Run Code Online (Sandbox Code Playgroud)

最后,尝试将String值分配给 a Listof 类型Offset class/object

如果你想让它工作,那么要么创建 ofList类型String,然后将其添加到List

List<String> pointlist = List.from(value.data['point']); 
Run Code Online (Sandbox Code Playgroud)

或者先像这样将数据添加到Offset对象中,然后将其传递给List

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);
      });

      });
   });
  }
Run Code Online (Sandbox Code Playgroud)

概括

始终查找您提供给 的数据类型List,如果您尝试添加不是 类型的数据TList<T>您将始终收到类型不匹配的错误。希望这能让您对编程有一些清晰的认识和一些基本的想法。保持学习 :)