android - FlutterActivity MethodChannel 和 FlutterView

标签 android kotlin flutter

所以我在大约 4 个月前写了一个 Flutter 应用程序。现在我想做一个小改动,但我不能再编译应用程序了,因为 GeneratedPluginRegistrant.registerWith(this) 不再起作用,我没有更改 Kotlin 代码,只更改了 Dart 代码。

“GeneratedPluginRegistrant.registerWith( 这个)”中的“ 这个”向我显示了这个错误:

Type mismatch.    
Required: FlutterEngine!    
Found: MainActivity

MainActivity 类:
import android.os.Bundle
import io.flutter.app.FlutterActivity
import io.flutter.plugin.common.MethodChannel
import io.flutter.plugins.GeneratedPluginRegistrant
import io.flutter.view.FlutterMain

class MainActivity : FlutterActivity() {

  override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)

    GeneratedPluginRegistrant.registerWith(this) // here is the error: Type mismatch. Required: FlutterEngine! Found: MainActivity

    MethodChannel(flutterView, CHANNEL).setMethodCallHandler { call, result ->
      if (call.method == "helloFromNativeCode") {
        val greetings = helloFromNativeCode()
        result.success(greetings)
      }
    }
  }

  private fun helloFromNativeCode(): String {
    return "Hello from Native Android Code"
  }

  companion object {
    private const val CHANNEL = "flutter.native/helper"
  }
}

如果是使用:
import io.flutter.embedding.android.FlutterActivity

代替
import io.flutter.app.FlutterActivity

我可以用
override fun configureFlutterEngine(flutterEngine: FlutterEngine) {
        GeneratedPluginRegistrant.registerWith(flutterEngine);
    }

但遇到以下问题:
MethodChannel(flutterView, CHANNEL).setMethodCallHandler { call, result ->
      if (call.method == "helloFromNativeCode") {
        val greetings = helloFromNativeCode()
        result.success(greetings)
      }
    }

因为我在 上遇到错误 flutter 查看 :
Unresolved reference: flutterView

代码如下所示:
import android.os.Bundle
import io.flutter.embedding.android.FlutterActivity
import io.flutter.embedding.engine.FlutterEngine
import io.flutter.plugin.common.MethodChannel
import io.flutter.plugins.GeneratedPluginRegistrant
import io.flutter.view.FlutterMain

class MainActivity : FlutterActivity() {
    override fun configureFlutterEngine(flutterEngine: FlutterEngine) {
        GeneratedPluginRegistrant.registerWith(flutterEngine);
    }

  override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)

    MethodChannel(flutterView, CHANNEL).setMethodCallHandler { call, result -> // here is the error
      if (call.method == "helloFromNativeCode") {
        val greetings = helloFromNativeCode()
        result.success(greetings)
      }
    }
  }

  private fun helloFromNativeCode(): String {
    return "Hello from Native Android Code"
  }

  companion object {
    private const val CHANNEL = "flutter.native/helper"
  }
}

我希望有一个人可以帮助我。

最佳答案

代替flutterView 使用flutterEngine.getDartExecutor()。

关于android - FlutterActivity MethodChannel 和 FlutterView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59323505/

相关文章:

java - Android 应用程序不会将数据存储在数据库中

java - 升级到 billingclient :billing:2. 1.0 后,IabHelper 不再导入 android.vending.billing.IInAppBillingService

websocket - Flutter 如何监听 websocket 响应?

Flutter 定位包无法在后台运行

java - 如何在同一页面播放视频(媒体播放器)

javascript - 使用 SearchView 按按钮文本进行搜索

android - 处理程序帖子在 Kotlin Android 中不起作用

android - Android Kotlin-自定义 View 未在设计编辑器中正确显示

html - 当 Webview 重定向到 Flutter 中的另一个页面时获取 Json 响应

android - 使用 Android 数据绑定(bind),如何指定在 Android Studio 布局预览期间显示的虚拟(或 "default")文本?