improve platform view loading

This commit is contained in:
Fabian Freund
2025-02-13 14:30:02 +01:00
parent e09219e07c
commit ddb0f14059
@@ -55,6 +55,9 @@ class FlutterMozillaComponentsPlugin: FlutterPlugin, ActivityAware {
private lateinit var _flutterPluginBinding: FlutterPlugin.FlutterPluginBinding; private lateinit var _flutterPluginBinding: FlutterPlugin.FlutterPluginBinding;
private lateinit var _flutterEvents : GeckoStateEvents private lateinit var _flutterEvents : GeckoStateEvents
private var isPlatformViewRegistered = false
private var pendingFragmentShow = false
init { init {
Log.addSink(AndroidLogSink()) Log.addSink(AndroidLogSink())
} }
@@ -113,14 +116,16 @@ class FlutterMozillaComponentsPlugin: FlutterPlugin, ActivityAware {
} }
private fun showNativeFragment() { private fun showNativeFragment() {
if (activity == null) { if (!isPlatformViewRegistered) {
//result.error("ACTIVITY_NOT_ATTACHED", "Activity is not attached", null) pendingFragmentShow = true
return return
} }
// Replace this with your actual Fragment if (activity == null) {
val nativeFragment = BrowserFragment.create() return
}
val nativeFragment = BrowserFragment.create()
val fm = (activity as FragmentActivity).supportFragmentManager val fm = (activity as FragmentActivity).supportFragmentManager
fm.beginTransaction() fm.beginTransaction()
.replace(FRAGMENT_CONTAINER_ID, nativeFragment) .replace(FRAGMENT_CONTAINER_ID, nativeFragment)
@@ -141,6 +146,14 @@ class FlutterMozillaComponentsPlugin: FlutterPlugin, ActivityAware {
_flutterEvents _flutterEvents
) )
) )
isPlatformViewRegistered = true
// Process any pending fragment show request
if (pendingFragmentShow) {
pendingFragmentShow = false
showNativeFragment()
}
} }
override fun onDetachedFromActivityForConfigChanges() { override fun onDetachedFromActivityForConfigChanges() {
@@ -153,6 +166,8 @@ class FlutterMozillaComponentsPlugin: FlutterPlugin, ActivityAware {
override fun onDetachedFromActivity() { override fun onDetachedFromActivity() {
this.activity = null this.activity = null
isPlatformViewRegistered = false
pendingFragmentShow = false
} }
companion object { companion object {