繁体   English   中英

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

[英]Use plugin directly inside flutter project without separating to another package or adding plugin field in pubspec.yaml

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

这是我当前的代码:

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 Class 的文档,您可以在 MainActivity Class 中执行此操作。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM