Flutter

flutter 插件开发

2021-08-10  本文已影响0人  惟吾德馨_慧

new peoject

new flutter project,选择Flutter Plugin,next,输入插件名,包名,运行平台及编写语言,finish!


new flutter plugin

如上图,笔者的插件名为log_plugin,选用Android,java语言开发


结构

声明方法

在自动打开和插件名同名的dart文件,声明要使用其他语言的方法,本例使用java 语言实现Android原生的log输出

 class LogPlugin {
  static const MethodChannel _channel = const MethodChannel('log_plugin');

  static Future<String?> get platformVersion async {
    final String? version = await _channel.invokeMethod('getPlatformVersion');
    return version;
  }

  static void d(String tag, String message) {
    _channel.invokeMethod("logD", {"tag": tag, "message": message});
  }

  static void e(String tag, String message) {
    _channel.invokeMethod("logE", {"tag": tag, "message": message});
  }

  static void i(String tag, String message) {
    _channel.invokeMethod("logI", {"tag": tag, "message": message});
  }
}

java实现声明的方法

编辑 android/src/main/java/com/whh/log_plugin/LogPlugin.java
在onMethodCall方法中,区别声明方法名,以实现该方法逻辑

       if (call.method.equals("logD")) {
            final String tag = call.argument("tag");
            final String msg = call.argument("message");
            android.util.Log.d(tag, msg);
        } else if (call.method.equals("logE")) {
            final String tag = call.argument("tag");
            final String msg = call.argument("message");
            android.util.Log.e(tag, msg);
        } else if (call.method.equals("logI")) {
            final String tag = call.argument("tag");
            final String msg = call.argument("message");
            android.util.Log.i(tag, msg);
        } 

至此,简单的插件开发完成,接下来测试

测试插件代码

example是插件测试工程,打开其中的main.dart

//调用方法
LogPlugin.i("whh0810", "initPlatformState..."); 
LogPlugin.d("whh0810", "platformVersion:$platformVersion");
运行结果

本地引入插件

打开已有的或者新建一个flutter app project,在其pubspec.yaml引入插件


引入本地插件

使用pub get 关联到插件


关联插件
使用方法同上述的example,不在赘述。

发布插件

详见官网文档

此文为 flutter 初学者记录学习过程,附上 github,小小分享~

每天进步一点点。。。(2021-08-10)

上一篇下一篇

猜你喜欢

热点阅读