registerLocationUpdate static method

Future<void> registerLocationUpdate(
  1. void callback(
    1. LocationDto
    ), {
  2. void initCallback(
    1. Map<String, dynamic>
    )?,
  3. Map<String, dynamic> initDataCallback = const {},
  4. void disposeCallback()?,
  5. bool autoStop = false,
  6. AndroidSettings androidSettings = const AndroidSettings(),
  7. IOSSettings iosSettings = const IOSSettings(),
})

Registers a callback to receive location updates in the background.

This method starts background location tracking and calls callback whenever a new location is available. The callback will be invoked even when the app is in the background or terminated.

Parameters:

  • callback: Function called with each location update. Required.
  • initCallback: Optional function called when the location service initializes.
  • initDataCallback: Optional data passed to initCallback.
  • disposeCallback: Optional function called when the service is disposed.
  • autoStop: If true, automatically stops tracking when app goes to background. Default is false.
  • androidSettings: Platform-specific settings for Android. Default uses AndroidSettings with default values.
  • iosSettings: Platform-specific settings for iOS. Default uses IOSSettings with default values.

Throws a PlatformException if registration fails.

Example:

await BackgroundLocator.registerLocationUpdate(
  (location) => print('Got location: $location'),
  initCallback: (data) => print('Service initialized'),
  disposeCallback: () => print('Service disposed'),
  autoStop: true,
);

Implementation

static Future<void> registerLocationUpdate(
    void Function(LocationDto) callback,
    {void Function(Map<String, dynamic>)? initCallback,
    Map<String, dynamic> initDataCallback = const {},
    void Function()? disposeCallback,
    bool autoStop = false,
    AndroidSettings androidSettings = const AndroidSettings(),
    IOSSettings iosSettings = const IOSSettings()}) async {
  if (autoStop) {
    _widgetsBinding!.addObserver(AutoStopHandler());
  }

  final args = SettingsUtil.getArgumentsMap(
      callback: callback,
      initCallback: initCallback,
      initDataCallback: initDataCallback,
      disposeCallback: disposeCallback,
      androidSettings: androidSettings,
      iosSettings: iosSettings);

  await _channel.invokeMethod(
      Keys.METHOD_PLUGIN_REGISTER_LOCATION_UPDATE, args);
}