dart 如何在Flutterflow中设置自定义文档记录对象的值?

vuktfyat  于 2023-09-28  发布在  Flutter
关注(0)|答案(3)|浏览(151)

我试图在Flutterflow中设置自定义文档记录对象的值。我创建了一个集合和一个Location文档类型。我想将这些位置文档的列表传递给Flutterflow的GoogleMaps组件,它只允许在使用文档时为标记附加数据。所以我不能使用列表自定义数据类型。
这段代码已经可以处理自定义数据类型了,但是现在我需要重写它,使它可以处理文档记录。
如何为LocationRecord对象设置值(name,description,latLng)?我不需要把它们保存到数据库。我只需要这些对象来欺骗GoogleMap组件,因为我的位置数据来自一个API。

List<LocationRecord> createLocationRecordsFromJson(dynamic jsonMarkers) {
  /// MODIFY CODE ONLY BELOW THIS LINE

  List<LocationRecord> locations = [];
  dynamic markers = jsonMarkers['markers'];
  markers.forEach((element) {
    LocationRecord location = new LocationRecord();
    /// something like location.set('name', element['title']);
    locations.add(location);
  });
  return locations;

  /// MODIFY CODE ONLY ABOVE THIS LINE
}
2j4z5cfb

2j4z5cfb1#

class LocationRecord {
  String name;
  String description;
  dynamic latLng; //  adjust the data type

  LocationRecord({
    required this.name,
    required this.description,
    required this.latLng,
  });
}

List<LocationRecord> createLocationRecordsFromJson(dynamic jsonMarkers) {
  List<LocationRecord> locations = [];
  dynamic markers = jsonMarkers['markers'];
  
  markers.forEach((element) {
    // Assuming 'title' and other relevant fields are in element
    String name = element['title'];
    String description = element['description'];
    dynamic latLng = element['latLng']; // Adjust the key 

    LocationRecord location = LocationRecord(
      name: name,
      description: description,
      latLng: latLng,
    );
    
    locations.add(location);
  });

  return locations;
}

确保您可以访问JSON数据中元素的必要字段。你提到了“title”作为字段之一,顺便说一句,还要确保“description”和“latLng”在你的API响应中可用。

vm0i2vca

vm0i2vca2#

看起来你已经创建了一个自定义的数据类型,所以你应该能够遵循这个准则:https://docs.flutterflow.io/data-and-backend/custom-data-types/custom-data-type-in-custom-code

List<LocationRecord> createLocationRecordsFromJson(dynamic jsonMarkers) {
  final markers = jsonMarkers['markers'] as Map?;
  return markers?.map((m) => LocationRecord.fromMap(m)).toList() ?? [];
}
nhhxz33t

nhhxz33t3#

这在扑流是不可能的自定义函数不是异步的,如果你想使用Firestore,你需要使用自定义动作或自定义小部件。

相关问题