fromMap static method

GeolocationEvent fromMap(
  1. JsonMap map
)

Implementation

static GeolocationEvent<dynamic> fromMap(JsonMap map) {
  final type = _parseType(map['type'] as String?);
  final payload = map['data'];

  switch (type) {
    case EventType.location:
      return GeolocationEvent<Location>(
        type: type,
        data: Location.fromMap(
          payload is Map ? Map<String, dynamic>.from(payload) : const {},
        ),
      );
    case EventType.motionChange:
    case EventType.heartbeat:
    case EventType.schedule:
      return GeolocationEvent<Location>(
        type: type,
        data: Location.fromMap(
          payload is Map ? Map<String, dynamic>.from(payload) : const {},
        ),
      );
    case EventType.activityChange:
      if (payload is Map && payload['activity'] is Map) {
        return GeolocationEvent<Activity>(
          type: type,
          data: Activity.fromMap(
            Map<String, dynamic>.from(payload['activity'] as Map),
          ),
        );
      }
      return GeolocationEvent<Activity>(
        type: type,
        data: Activity.fromMap(
          payload is Map ? Map<String, dynamic>.from(payload) : const {},
        ),
      );
    case EventType.providerChange:
      return GeolocationEvent<ProviderChangeEvent>(
        type: type,
        data: ProviderChangeEvent.fromMap(
          payload is Map ? Map<String, dynamic>.from(payload) : const {},
        ),
      );
    case EventType.geofence:
      return GeolocationEvent<GeofenceEvent>(
        type: type,
        data: GeofenceEvent.fromMap(
          payload is Map ? Map<String, dynamic>.from(payload) : const {},
        ),
      );
    case EventType.connectivityChange:
      return GeolocationEvent<ConnectivityChangeEvent>(
        type: type,
        data: ConnectivityChangeEvent.fromMap(
          payload is Map ? Map<String, dynamic>.from(payload) : const {},
        ),
      );
    case EventType.http:
      return GeolocationEvent<HttpEvent>(
        type: type,
        data: HttpEvent.fromMap(
          payload is Map ? Map<String, dynamic>.from(payload) : const {},
        ),
      );
    case EventType.notificationAction:
    case EventType.powerSaveChange:
    case EventType.enabledChange:
    case EventType.geofencesChange:
    case EventType.unknown:
      return GeolocationEvent<dynamic>(
        type: type,
        data: payload,
      );
  }
}