Native調用Flutter(二)

在學習本編文章之前,如果您還不了解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監(jiān)聽。

// 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() {

    }
});

項目地址

?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容