![](/img/trans.png)
[英]google_sign_in Flutter plugin always returns null serverAccessCode
[英]Flutter Plugin With Kotlin, Activity always returns null
當我在 Flutter 中按下 FAB 時,我試圖訪問用 Kotlin 編寫的 Flutter 插件中的活動引用。
我的課程是ActivityAware
這是代碼:Kotlin:
lateinit var myActivity: Activity
//Method called by ActivityAware plugins to fetch the activity on re-initialization
override fun onReattachedToActivityForConfigChanges(binding: ActivityPluginBinding) {
this.myActivity = binding.activity
}
//Method called by ActivityAware plugins to fetch the activity on initialization
override fun onAttachedToActivity(binding: ActivityPluginBinding) {
this.myActivity = binding.activity
}
//With this method is called from Flutter to check if the Activity is accessible.
//In this case it is always returning null/ not initialized
//It prints "FAILED AGAIN!!"
override fun onMethodCall(@NonNull call: MethodCall, @NonNull result: Result) {
if (call.method == "checkForActivity") {
if(::myActivity.isInitialized){
System.out.println("I FOUND IT!!")
}else{
System.out.println("FAILED AGAIN!!")
}
return
} else {
result.notImplemented()
}
}
飛鏢代碼(Flutter):
//This Flutter class is run whenever you press a button to check for the Activity in Native Kotlin.
static const MethodChannel _channel =
const MethodChannel('sphinx_plugin');
static Future<bool> get checkForActivity async {
final bool isready = await _channel.invokeMethod('checkForActivity');
return isready;
}
我找到了解決方案。
lateinit var myplugin: MyPlugin()
override fun onAttachedToEngine(@NonNull flutterPluginBinding: FlutterPlugin.FlutterPluginBinding) {
myplugin = MyPlugin()
val channel = MethodChannel(flutterPluginBinding.getFlutterEngine().getDartExecutor(), "my_plugin")
channel.setMethodCallHandler(myplugin)
}
//This is where I was going wrong..The reference was being lost somewhere
override fun onAttachedToActivity(binding: ActivityPluginBinding) {
myplugin.myActivity = binding.activity
}
通過設置:
myplugin.myActivity
后來我找到了活動參考。 無論如何謝謝:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.