From 7b6e6f3846f770258644eb7bb20f53eb9fa40923 Mon Sep 17 00:00:00 2001 From: Antoine Miller Date: Mon, 20 Jul 2026 12:16:38 -0700 Subject: [PATCH] fix(android): guard onDetachedFromEngine against null channel The MethodChannel is created in onAttachedToActivity, so a Flutter engine that registers the plugin without ever attaching an Activity (e.g. an FCM background isolate) reached onDetachedFromEngine with channel still null and crashed with a NullPointerException on teardown. Co-Authored-By: Claude Opus 4.8 --- .../tryterra/terra_flutter_bridge/TerraFlutterPlugin.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/android/src/main/java/co/tryterra/terra_flutter_bridge/TerraFlutterPlugin.java b/android/src/main/java/co/tryterra/terra_flutter_bridge/TerraFlutterPlugin.java index 1ad68e2..ae7a461 100644 --- a/android/src/main/java/co/tryterra/terra_flutter_bridge/TerraFlutterPlugin.java +++ b/android/src/main/java/co/tryterra/terra_flutter_bridge/TerraFlutterPlugin.java @@ -479,7 +479,12 @@ public void onMethodCall(@NonNull MethodCall call, @NonNull Result result) { @Override public void onDetachedFromEngine(@NonNull FlutterPluginBinding binding) { - channel.setMethodCallHandler(null); + // channel is created in onAttachedToActivity, so a headless engine that never + // attaches an Activity (e.g. an FCM background isolate) reaches here with it null. + if (channel != null) { + channel.setMethodCallHandler(null); + channel = null; + } } }