Native调用Flutter(二)

2021-08-22  本文已影响0人  _悟_空

在学习本编文章之前,如果您还不了解Flutter如何调用Native那么请点这里。否则可能会阻碍您的理解。

Native调用Flutter,分为:
1.回调(Flutter调用Native后,Native回调给Flutter)。
2.主动调用(Native主动去调用Flutter)。

一、回调(核心代码👇)

   //  android plugins 中
    @Override
    public void onMethodCall(MethodCall call, MethodChannel.Result result) {
        switch (call.method) {
            case "method_flag":
                result.success("native 返回值给 flutter");// android端回调给Flutter端。
                break;
            default:
                result.notImplemented();
                break;
        }
    }
  // dart中
  void flutteePassValueToAndroidAndGetBack() async {
    var backResult= await new MethodChannel("Channel_name").invokeMethod("method_flag", "flutter 传值给 native");
    print("----回调值-------$backResult");
  }

二、主动调用(核心代码👇)

native主动调用Flutter与Flutter主动调用native使用上是类似的。调用端需要通过MethodChannel.invokeMethod去调用。被调用端需要注册MethodChannel.setMethodCallHandler监听。

// dart中
  MethodChannel _channel = new MethodChannel("Channel_name");
  _channel.setMethodCallHandler(onMethodCall);

  // flutter注册MethodCallHandler供Native调用方法与android中注册一样。
  Future<dynamic> onMethodCall(MethodCall call) async {
    switch (call.method) {
      case "native-invoke-flutter":
        var argument = call.arguments;
        print("---------$argument");
        return "flutter 获得结果返回给native"; // 这里是Flutter返回结果给 native;
      default:
        return "";
    }
  }
// android 中
MethodChannel channel = new MethodChannel(binaryMessenger, "Channel_name");

channel.invokeMethod("native-invoke-flutter", "这是native 主动调用 flutter的参数", new MethodChannel.Result() {
     @Override
     public void success(Object result) { // 调用dart中的方法,成功回调。 
          Log.d("=---==--==", "success: result = " + result.toString());
     }

     @Override
      public void error(String errorCode, String errorMessage, Object errorDetails) {

     }

     @Override
     public void notImplemented() {

    }
});

项目地址

上一篇下一篇

猜你喜欢

热点阅读