You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在FlutterFlow中为自定义文档记录对象赋值?

在FlutterFlow中构造LocationRecord对象适配GoogleMaps组件

我在FlutterFlow里需要给自定义文档记录对象赋值,已经创建了集合和Location文档类型,要把这类Location文档的列表传给GoogleMaps组件,但该组件只支持通过文档绑定标记数据,没法用自定义数据类型列表。之前用自定义数据类型实现了功能,现在要改写成适配文档记录的代码。

我的位置数据来自API,不需要存数据库,只需要构造LocationRecord对象来适配GoogleMaps组件,请问怎么给LocationRecord对象设置name、description、latLng的值?

现有代码:

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
}

解决方案

FlutterFlow生成的LocationRecord类通常会提供带参数的构造器,或是支持直接给公开属性赋值,以下是两种可行的修改方式:

方式1:通过构造器直接初始化对象

如果LocationRecord包含对应字段的构造方法,创建对象时直接传入参数即可:

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

  List<LocationRecord> locations = [];
  dynamic markers = jsonMarkers['markers'];
  markers.forEach((element) {
    // 先构造LatLng对象,注意确保导入google_maps_flutter包
    final latLng = LatLng(
      double.parse(element['latitude'].toString()),
      double.parse(element['longitude'].toString()),
    );
    
    // 通过构造器初始化LocationRecord
    LocationRecord location = LocationRecord(
      name: element['title'],
      description: element['description'], // 需与API返回的描述字段对应
      latLng: latLng,
    );
    locations.add(location);
  });
  return locations;

  /// MODIFY CODE ONLY ABOVE THIS LINE
}

方式2:直接给对象属性赋值

如果LocationRecord的字段是公开可写的,直接给属性赋值即可:

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

  List<LocationRecord> locations = [];
  dynamic markers = jsonMarkers['markers'];
  markers.forEach((element) {
    LocationRecord location = LocationRecord();
    
    final latLng = LatLng(
      double.parse(element['latitude'].toString()),
      double.parse(element['longitude'].toString()),
    );
    
    // 直接给属性赋值
    location.name = element['title'];
    location.description = element['description'];
    location.latLng = latLng;
    
    locations.add(location);
  });
  return locations;

  /// MODIFY CODE ONLY ABOVE THIS LINE
}

注意要点

  • 确保API返回的字段名和赋值时的字段对应,比如如果API标题字段是name,要改成element['name']
  • 经纬度需转换为double类型,避免类型不匹配报错
  • 如果LocationRecord有必填的文档ID字段,可传入临时值(比如Uuid().v4(),需导入uuid包)或空字符串,因为不需要存储到数据库,临时值不影响地图组件使用

内容的提问来源于stack exchange,提问作者Abenil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 09:07:08