new peoject
new flutter project江耀,選擇Flutter Plugin,next擒权,輸入插件名袱巨,包名,運行平臺及編寫語言菜拓,finish!
new flutter plugin
如上圖瓣窄,筆者的插件名為log_plugin,選用Android纳鼎,java語言開發(fā)
結(jié)構(gòu)
聲明方法
在自動打開和插件名同名的dart文件俺夕,聲明要使用其他語言的方法,本例使用java 語言實現(xiàn)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實現(xiàn)聲明的方法
編輯 android/src/main/java/com/whh/log_plugin/LogPlugin.java
在onMethodCall方法中贱鄙,區(qū)別聲明方法名劝贸,以實現(xiàn)該方法邏輯
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);
}
至此,簡單的插件開發(fā)完成逗宁,接下來測試
測試插件代碼
example是插件測試工程映九,打開其中的main.dart
//調(diào)用方法
LogPlugin.i("whh0810", "initPlatformState...");
LogPlugin.d("whh0810", "platformVersion:$platformVersion");
運行結(jié)果
本地引入插件
打開已有的或者新建一個flutter app project,在其pubspec.yaml引入插件
引入本地插件
使用pub get 關(guān)聯(lián)到插件
關(guān)聯(lián)插件
使用方法同上述的example瞎颗,不在贅述件甥。
發(fā)布插件
此文為 flutter 初學(xué)者記錄學(xué)習(xí)過程,附上 github哼拔,小小分享~