Skip to content

Commit 22770b2

Browse files
authored
🎉 Add support for Android Plugin API v2 (#67)
Still supports API v1. Co-authored-by: junying1 <jying@simplec.com>
1 parent 2cfff7e commit 22770b2

File tree

1 file changed

+21
-3
lines changed

1 file changed

+21
-3
lines changed

android/src/main/kotlin/com/linusu/flutter_web_auth/FlutterWebAuthPlugin.kt

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,21 +6,39 @@ import android.net.Uri
66

77
import androidx.browser.customtabs.CustomTabsIntent
88

9+
import io.flutter.embedding.engine.plugins.FlutterPlugin
10+
import io.flutter.plugin.common.BinaryMessenger
911
import io.flutter.plugin.common.MethodCall
1012
import io.flutter.plugin.common.MethodChannel
1113
import io.flutter.plugin.common.MethodChannel.MethodCallHandler
1214
import io.flutter.plugin.common.MethodChannel.Result
1315
import io.flutter.plugin.common.PluginRegistry.Registrar
1416

15-
class FlutterWebAuthPlugin(private val context: Context): MethodCallHandler {
17+
class FlutterWebAuthPlugin(private var context: Context? = null, private var channel: MethodChannel? = null): MethodCallHandler, FlutterPlugin {
1618
companion object {
1719
val callbacks = mutableMapOf<String, Result>()
1820

1921
@JvmStatic
2022
fun registerWith(registrar: Registrar) {
21-
val channel = MethodChannel(registrar.messenger(), "flutter_web_auth")
22-
channel.setMethodCallHandler(FlutterWebAuthPlugin(registrar.activity() ?: registrar.context()))
23+
val plugin = FlutterWebAuthPlugin()
24+
plugin.initInstance(registrar.messenger(), registrar.context())
2325
}
26+
27+
}
28+
29+
fun initInstance(messenger: BinaryMessenger, context: Context) {
30+
this.context = context
31+
channel = MethodChannel(messenger, "flutter_web_auth")
32+
channel?.setMethodCallHandler(this)
33+
}
34+
35+
override public fun onAttachedToEngine(binding: FlutterPlugin.FlutterPluginBinding) {
36+
initInstance(binding.getBinaryMessenger(), binding.getApplicationContext())
37+
}
38+
39+
override public fun onDetachedFromEngine(binding: FlutterPlugin.FlutterPluginBinding) {
40+
context = null
41+
channel = null
2442
}
2543

2644
override fun onMethodCall(call: MethodCall, resultCallback: Result) {

0 commit comments

Comments
 (0)