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

FlutterFlow插件代码报错:placePosition字段不存在问题排查

FlutterFlow插件位置字段报错修复(placePosition已废弃)

你的代码中double lat2 = place.placePosition!.latitude;行报错,核心原因是FlutterFlow的PlacesRecord类里,placePosition字段已经被废弃,现在官方改用geoPoint字段存储位置信息。

核心修改步骤

直接将代码中调用placePosition的部分替换为geoPoint,同时做好空安全处理:

  1. 替换原有的位置字段调用:
    原代码:
    double lat2 = place.placePosition!.latitude;
    double lon2 = place.placePosition!.longitude;
    
    修改为:
    if (place.geoPoint == null) continue; // 跳过无位置数据的条目
    double lat2 = place.geoPoint!.latitude;
    double lon2 = place.geoPoint!.longitude;
    

修改后的完整代码

List<PlacesRecord> getPlacesMaximumDistance(
  List<PlacesRecord> places,
  LatLng userGeo,
  double maxDistance,
) {
  /// MODIFY CODE ONLY BELOW THIS LINE

  List<PlacesRecord> placesList = [];
  List<double> listKm = [];
  double lat1 = userGeo.latitude;
  double lon1 = userGeo.longitude;

  for (PlacesRecord place in places) {
    // 跳过无位置数据的条目,避免空指针
    if (place.geoPoint == null) continue;
    
    double lat2 = place.geoPoint!.latitude;
    double lon2 = place.geoPoint!.longitude;

    // 球面距离计算逻辑
    var c = math.cos;
    var p = 0.017453292519943295;
    var a = 0.5 -
        c((lat2 - lat1) * p) / 2 +
        c(lat1 * p) * c(lat2 * p) * (1 - c((lon2 - lon1) * p)) / 2;
    var d = (12742 * math.asin(math.sqrt(a)));
    
    String inString = d.toStringAsFixed(2);
    double inDouble = double.parse(inString);
    listKm.add(inDouble);
    
    listKm.sort();
    int listKmIndex = listKm.indexWhere((dist) => dist == inDouble);
    
    if (inDouble <= maxDistance) {
      placesList.insert(listKmIndex, place);
    }
  }
  return placesList;

  /// MODIFY CODE ONLY ABOVE THIS LINE
}

额外注意事项

  • 字段确认:如果替换geoPoint后仍报错,打开FlutterFlow的Data面板,查看PlacesRecord的结构,确认当前项目中存储位置的字段名(部分项目可能自定义为location等)。
  • 空安全优化:如果允许无位置的条目保留,可以将continue改为给lat2/lon2设置默认值,比如double lat2 = place.geoPoint?.latitude ?? 0.0;。
  • 性能优化:当前代码每次循环都对listKm排序,效率较低,可以在所有距离计算完成后统一排序,再映射到placesList,不过这属于非必要优化。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 06:32:53