From 40c9bdd364c1e111783b104bac11f2503a08e7bc Mon Sep 17 00:00:00 2001 From: Koen Van Looveren Date: Wed, 23 Dec 2020 14:34:43 +0100 Subject: [PATCH] #8 Fixed the issue where the plugins were not yet registered --- ios/Classes/BackgroundLocationTrackerPlugin.m | 6 ++++++ lib/src/background_location_tracker_manager.dart | 3 +-- lib/src/channel/background_channel.dart | 10 +++++----- 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/ios/Classes/BackgroundLocationTrackerPlugin.m b/ios/Classes/BackgroundLocationTrackerPlugin.m index 909c4b2..bc23b12 100644 --- a/ios/Classes/BackgroundLocationTrackerPlugin.m +++ b/ios/Classes/BackgroundLocationTrackerPlugin.m @@ -9,7 +9,13 @@ #endif @implementation BackgroundLocationTrackerPlugin + + (void)registerWithRegistrar:(NSObject*)registrar { [SwiftBackgroundLocationTrackerPlugin registerWithRegistrar:registrar]; } + ++ (void)setPluginRegistrantCallback:(FlutterPluginRegistrantCallback)callback { + [SwiftBackgroundLocationTrackerPlugin setPluginRegistrantCallback:callback]; +} + @end diff --git a/lib/src/background_location_tracker_manager.dart b/lib/src/background_location_tracker_manager.dart index b16ebea..b817374 100644 --- a/lib/src/background_location_tracker_manager.dart +++ b/lib/src/background_location_tracker_manager.dart @@ -6,10 +6,9 @@ import 'package:background_location_tracker/src/model/background_location_update import 'package:background_location_tracker/src/model/config/background_location_tracker_config.dart'; import 'package:background_location_tracker/src/util/logger.dart'; -typedef LocationUpdateCallback = void Function(BackgroundLocationUpdateData data); +typedef LocationUpdateCallback = Future Function(BackgroundLocationUpdateData data); class BackgroundLocationTrackerManager { - static Future initialize(Function callback, {BackgroundLocationTrackerConfig config}) { final pluginConfig = config ??= const BackgroundLocationTrackerConfig(); BackgroundLocationTrackerLogger.enableLogging = pluginConfig.loggingEnabled; diff --git a/lib/src/channel/background_channel.dart b/lib/src/channel/background_channel.dart index 448011b..8e167d0 100644 --- a/lib/src/channel/background_channel.dart +++ b/lib/src/channel/background_channel.dart @@ -13,10 +13,9 @@ class BackgroundChannel { ..setMethodCallHandler((call) async { switch (call.method) { case 'onLocationUpdate': - await handleLocationUpdate(call, callback, enableLogging: enableLogging); - break; + return handleLocationUpdate(call, callback, enableLogging: enableLogging); default: - break; + return false; } }) ..invokeMethod( @@ -24,13 +23,14 @@ class BackgroundChannel { ); } - static Future handleLocationUpdate(MethodCall call, LocationUpdateCallback callback, {bool enableLogging = false}) async { + static Future handleLocationUpdate(MethodCall call, LocationUpdateCallback callback, {bool enableLogging = false}) async { final data = call.arguments as Map; // ignore: avoid_as final isLoggingEnabled = data['logging_enabled'] as bool; // ignore: avoid_as BackgroundLocationTrackerLogger.enableLogging = isLoggingEnabled; BackgroundLocationTrackerLogger.log('locationUpdate: ${call.arguments}'); final lat = data['lat'] as double; // ignore: avoid_as final lon = data['lon'] as double; // ignore: avoid_as - callback(BackgroundLocationUpdateData(lat: lat, lon: lon)); + await callback(BackgroundLocationUpdateData(lat: lat, lon: lon)); + return true; } }