new peoject
new flutter project,选择Flutter Plugin,next,输入插件名,包名,运行平台及编写语言,finish!
如上图,笔者的插件名为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,小小分享~