load static method

Future<MGps?> load({
  1. required MGpsConfig config,
})

Implementation

static Future<MGps?> load({required MGpsConfig config}) async {
  // permission
  bool serviceEnabled = await Geolocator.isLocationServiceEnabled();
  if (!serviceEnabled) {
    await Geolocator.openAppSettings();
    return null;
  }

  final denied = [
    LocationPermission.denied,
    LocationPermission.deniedForever,
    LocationPermission.unableToDetermine,
  ];

  LocationPermission permissionGranted = await Geolocator.checkPermission();

  if (denied.contains(permissionGranted)) {
    permissionGranted = await Geolocator.requestPermission();
    if (denied.contains(permissionGranted)) {
      return null;
    }
  }

  // settings
  LocationSettings settings = LocationSettings(
    accuracy: LocationAccuracy.best,
    distanceFilter: config.gpsDistanceFilter,
  );

  if (defaultTargetPlatform == TargetPlatform.android) {
    settings = AndroidSettings(
      accuracy: LocationAccuracy.best,
      intervalDuration: const Duration(milliseconds: 200),
      distanceFilter: config.gpsDistanceFilter,
    );
  } else if (defaultTargetPlatform == TargetPlatform.iOS) {
    settings = AppleSettings(
      accuracy: LocationAccuracy.bestForNavigation,
      distanceFilter: config.gpsDistanceFilter,
    );
  }

  return MGps(
    config: config,
    engine: MGpsEngine(
      settings: settings,
      config: config,
    ),
  );
}