From 84038c7b81d69ae0166768576e432c2d49f92a8f Mon Sep 17 00:00:00 2001 From: Fabian Freund Date: Sat, 7 Mar 2026 16:27:29 +0100 Subject: [PATCH] fix reader view lifecycle issue --- .../integration/ReaderViewIntegration.kt | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/packages/flutter_mozilla_components/android/src/main/kotlin/eu/weblibre/flutter_mozilla_components/integration/ReaderViewIntegration.kt b/packages/flutter_mozilla_components/android/src/main/kotlin/eu/weblibre/flutter_mozilla_components/integration/ReaderViewIntegration.kt index 03434f73..a1bc2ac7 100644 --- a/packages/flutter_mozilla_components/android/src/main/kotlin/eu/weblibre/flutter_mozilla_components/integration/ReaderViewIntegration.kt +++ b/packages/flutter_mozilla_components/android/src/main/kotlin/eu/weblibre/flutter_mozilla_components/integration/ReaderViewIntegration.kt @@ -31,6 +31,7 @@ class ReaderViewIntegration( private val readerViewEvents: ReaderViewEventsImpl, readerViewController: ReaderViewController ) : LifecycleAwareFeature, UserInteractionHandler { + private var listenerRegistered = false private val controllerListener = object : ReaderViewControllerListener { override fun onReaderViewToggled(enabled: Boolean) { @@ -51,10 +52,6 @@ class ReaderViewIntegration( } } - init { - readerViewEvents.addListener(controllerListener) - } - private val feature = ReaderViewFeature(context, engine, store, view) // Will be event based in flutter // { available, active -> @@ -66,11 +63,18 @@ class ReaderViewIntegration( // } override fun start() { + if (!listenerRegistered) { + readerViewEvents.addListener(controllerListener) + listenerRegistered = true + } feature.start() } override fun stop() { - readerViewEvents.removeListener(controllerListener) + if (listenerRegistered) { + readerViewEvents.removeListener(controllerListener) + listenerRegistered = false + } feature.stop() }