MiniProgramLocationResult.fromJson constructor

MiniProgramLocationResult.fromJson(
  1. Map<String, dynamic> json
)

Implementation

factory MiniProgramLocationResult.fromJson(Map<String, dynamic> json) {
  final latitude = json['latitude'];
  final longitude = json['longitude'];
  final accuracyMeters = json['accuracyMeters'];
  final capturedAtUtc = json['capturedAtUtc'];
  final source = json['source'];
  if (latitude is! num ||
      longitude is! num ||
      accuracyMeters is! num ||
      capturedAtUtc is! String ||
      source is! String) {
    throw const FormatException('Invalid mini-program location result.');
  }
  final capturedAt = DateTime.tryParse(capturedAtUtc);
  if (capturedAt == null) {
    throw const FormatException(
      'Location capturedAtUtc must be an ISO-8601 timestamp.',
    );
  }
  final result = MiniProgramLocationResult(
    latitude: latitude.toDouble(),
    longitude: longitude.toDouble(),
    accuracyMeters: accuracyMeters.toDouble(),
    capturedAtUtc: capturedAt,
    source: source,
  );
  result.validate();
  return result;
}