From 4ea5058a7dbd56a111aac4dbe69124faa19bfc5c Mon Sep 17 00:00:00 2001 From: Jonathan Duke Date: Wed, 9 Jul 2025 14:07:11 -0500 Subject: [PATCH 1/2] Prevent NullPointerException crash when callbackInfo is null in BackgroundWorker Fixes fluttercommunity/flutter_workmanager#527 --- .../dev/fluttercommunity/workmanager/BackgroundWorker.kt | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/BackgroundWorker.kt b/workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/BackgroundWorker.kt index 828a5d1..3b6a59e 100644 --- a/workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/BackgroundWorker.kt +++ b/workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/BackgroundWorker.kt @@ -90,6 +90,12 @@ class BackgroundWorker( ) { val callbackHandle = SharedPreferenceHelper.getCallbackHandle(applicationContext) val callbackInfo = FlutterCallbackInformation.lookupCallbackInformation(callbackHandle) + + if (callbackInfo == null) { + Log.e(TAG, "Failed to resolve Dart callback for handle $callbackHandle.") + return Result.failure() + } + val dartBundlePath = flutterLoader.findAppBundlePath() if (isInDebug) { From 73c3bbd9b4cee471f1d9bc1dc63642ac11cc7716 Mon Sep 17 00:00:00 2001 From: Jonathan Duke Date: Fri, 18 Jul 2025 08:52:57 -0500 Subject: [PATCH 2/2] fix compilation as suggested by @Tulleb in PR #619 --- .../dev/fluttercommunity/workmanager/BackgroundWorker.kt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/BackgroundWorker.kt b/workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/BackgroundWorker.kt index 3b6a59e..227e84e 100644 --- a/workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/BackgroundWorker.kt +++ b/workmanager_android/android/src/main/kotlin/dev/fluttercommunity/workmanager/BackgroundWorker.kt @@ -93,7 +93,8 @@ class BackgroundWorker( if (callbackInfo == null) { Log.e(TAG, "Failed to resolve Dart callback for handle $callbackHandle.") - return Result.failure() + completer?.set(Result.failure()) + return@ensureInitializationCompleteAsync } val dartBundlePath = flutterLoader.findAppBundlePath()