toLocationResult function

LocationResult toLocationResult(
  1. dynamic platformData
)

Converts the platform data, possibly including the lat/log LocationResult to the result object

Implementation

// ignore: avoid_annotating_with_dynamic
LocationResult toLocationResult(dynamic platformData) {
  if (platformData is Map) {
    final latitude = platformData['latitude'];
    final longitude = platformData['longitude'];
    final permissionStatusString = platformData['permissionStatus'] as String?;

    if (latitude is! double || longitude is! double) {
      return LocationResult.error(
        const Error(
          message: 'Latitude or longitude is missing',
          errorCode: ErrorCode.unknown,
        ),
        permissionStatus: permissionStatusString.toPermissionStatus(),
      );
    }

    final altitude = platformData['altitude'] as double?;
    final horizontalAccuracy = platformData['horizontalAccuracy'] as double?;
    final verticalAccuracy = platformData['verticalAccuracy'] as double?;
    final course = platformData['course'] as double?;
    final speed = platformData['speed'] as double?;
    final unixTimestamp = platformData['timestamp'] as double?;

    final timestamp = unixTimestamp != null
        ? DateTime.fromMillisecondsSinceEpoch(
            unixTimestamp.toInt() * 1000,
            isUtc: true,
          )
        : null;

    final floorLevel = platformData['floorLevel'] as int?;

    return LocationResult(
      Location(
        latitude: latitude,
        longitude: longitude,
        altitude: altitude,
        horizontalAccuracy: horizontalAccuracy,
        verticalAccuracy: verticalAccuracy,
        course: course,
        speed: speed,
        timestamp: timestamp,
        floorLevel: floorLevel,
      ),
      permissionStatus: permissionStatusString.toPermissionStatus(),
    );
  }

  // If this happens, please record the value in platformData and open an issue
  // on the github repo
  return LocationResult.unknownError;
}