Flutter / Firebase / Json:尝试将纬度和经度数据保存到Firestore

piah890a  于 2023-11-20  发布在  Flutter
关注(0)|答案(1)|浏览(153)

我正试图在数据库中保存标记的纬度和经度。
不幸的是,我有这个错误:
无效参数:“LatLng”的示例
软件包:latlong2:^0.9.0
我的模特:

import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:latlong2/latlong.dart';

class ActivitiesModel {
  String id;
  String organisateur;
  final DateTime? createDate;
  final DateTime? modifyDate;
  LatLng location;

  ActivitiesModel({
    this.id = '',
    required this.organisateur,
    this.createDate,
    this.modifyDate,
    required this.location,
  });

  Map<String, dynamic> toJson() => {
        'id': id,
        'organisateur': organisateur,
        'createDate': createDate,
        'modifyDate': modifyDate,
        'location': location,
      };

  static ActivitiesModel fromJson(Map<String, dynamic> json) => ActivitiesModel(
    id: json['id'],
    organisateur: json['organisateur'],
    createDate: (json['createDate'] as Timestamp).toDate(),
    modifyDate: (json['modifyDate'] as Timestamp).toDate(),
    location: LatLng.fromJson(json['location']),
  );
}

字符串
我尝试保存到Firebase数据库中的信息位置:

final activitiesModel = ActivitiesModel(
  id: widget.activitiesModel.id,
  organisateur: 'Mickael R.',
  createDate: widget.activitiesModel.createDate,
  modifyDate: DateTime.now(),
  location: LatLng(-12.0080041, -77.0778237),
);
return activitiesModel;


这是我犯的错误:
无效参数:“LatLng”的示例
如何使用对象LatLng在数据库中保存我的位置?

edqdpe6u

edqdpe6u1#

我的第一个猜测是,你正在传递一个类型为ActivitiesModel的对象,它不能处理其中的LatLng字段-因为它只能处理here文档中的类型。在你将对象传递给Firestore之前,你需要确保它只包含文档列表中的类型,包括这些类型的Map和数组。
因此,我通常会将纬度/经度对存储为带有命名字段的Map或带有两个值的数组。

相关问题