android - 直接在 flutter 项目中使用插件,无需分离到另一个包或在 pubspec.yaml 中添加插件字段

标签 android flutter kotlin plugins channel

我想创建一个在我的项目中使用的插件。我想知道如何调用或设置它以从 flutter 应用程序调用,而无需在 pubspec.yaml 中指定它(因为我使用一些其他包也使用它们自己的插件,如果我在 pubspec.yaml 中指定我的插件,这些插件不会工作)或分离到另一个包。

这是我当前的代码:

class DemoPlugin : FlutterPlugin, MethodCallHandler, ActivityAware {
    private lateinit var channel: MethodChannel
    private lateinit var context: Context
    private lateinit var activity: Activity

    override fun onMethodCall(call: MethodCall, result: Result) {
        when (call.method) {
            "demo" -> {
                result.success("Demo")
            }
        }
    }

    override fun onAttachedToEngine(@NonNull flutterPluginBinding: FlutterPluginBinding) {
        context = flutterPluginBinding.applicationContext
        channel = MethodChannel(flutterPluginBinding.binaryMessenger, channelName)
        channel.setMethodCallHandler(this)
    }

    override fun onDetachedFromEngine(binding: FlutterPluginBinding) {
        channel.setMethodCallHandler(null)
    }

    override fun onAttachedToActivity(binding: ActivityPluginBinding) {
        activity = binding.activity
    }

    override fun onDetachedFromActivityForConfigChanges() {}

    override fun onReattachedToActivityForConfigChanges(binding: ActivityPluginBinding) {}

    override fun onDetachedFromActivity() {}
}

最佳答案

根据 FlutterPlugin 类的文档,您可以在 MainActivity 类中执行此操作。

class MainActivity: FlutterActivity() {
    override fun configureFlutterEngine(flutterEngine: FlutterEngine) {
        super.configureFlutterEngine(flutterEngine)
        GeneratedPluginRegistrant.registerWith(flutterEngine)
        flutterEngine.plugins.add(DemoPlugin())  // add the plugin
    }
}

关于android - 直接在 flutter 项目中使用插件,无需分离到另一个包或在 pubspec.yaml 中添加插件字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73894331/

相关文章:

json - 使用 kotlinx.serialization 库反序列化具有不同值类型的 JSON 数组

java - Google map 未加载到 Android native 应用程序中

android - 如何在 Android 10 中以编程方式安装任何 Android 应用

android - 使用 dropbox sync API 的 android 应用程序可以使用本地安装的 dropbox 官方应用程序的缓存、文件系统和文件吗?

android - 错误 :(8, 0) 找不到 Gradle DSL 方法: 'compile()'

java - 如何让Android返回一个内部类对象给flutter

Flutter - 使用 keyValuePair 的 DropdownButton

dart - 很难在 flutter 中实现圆角模态底板

android - Android Q保存媒体文件未显示在图库中

kotlin - vert.x 关于网络服务器的概念?