Flutter与Android原生互相调用方法(一)
Flutter调用原生
举例说明
这里我获取的是原生Android通过SharedPreferences保存的值
Flutter中Dart语言的写法
下面展示一些 内联代码片
。
Future<void> _getResult() async {
const platform = MethodChannel('com.pushid');
try {
final String regid = await platform.invokeMethod('regid');
print("event-->> "+regid);
} on PlatformException catch (e) {
print(e);
}
}
Android 原生中的写法
public class PushPlugin implements MethodChannel.MethodCallHandler {
static MethodChannel channel;
public static Activity activity;
public static String CHANNEL = "com.pushid";
public static String regID = "";
PushPlugin(Activity activity) {
this.activity = activity;
}
public static void registerWith(Activity ac, @NonNull FlutterEngine flutterEngine) {
channel = new MethodChannel(flutterEngine.getDartExecutor().getBinaryMessenger(), CHANNEL);
activity = ac;
channel.setMethodCallHandler(new PushPlugin(ac));
}
@SuppressLint("WrongConstant")
@Override
public void onMethodCall(MethodCall methodCall, MethodChannel.Result result) {
if (methodCall.method.equals("regid")){
regID = ShareUtil.INSTANCE.getShareString("jpush_rid", activity);
result.success(regID);//回调给flutter的参数
} else {
result.notImplemented();
}
}
}
当然要在MainActivity中注册一下
override fun configureFlutterEngine(flutterEngine:FlutterEngine) {
GeneratedPluginRegister.registerGeneratedPlugins(flutterEngin);
PushPlugin.registerWith(this,flutterEngine)
}