Flutter Native調用Dart端方法,並獲取數據


參考資料:https://blog.csdn.net/julystroy/article/details/87367520

 

舉個例子,我們想從Native端請求Flutter端的一個getFlutterName方法獲取一個字符串。在Flutter端你需要給MethodChannel設置一個MethodCallHandler:

platform.setMethodCallHandler(platformCallHandler);

Future<dynamic> platformCallHandler(MethodCall call) async {
    switch (call.method) {
            case "getFlutterName":
            return "Flutter name flutter";
            break;
    }
}

Dart端:核心關鍵就是直接return 需要返回的數據即可!

 

Java端:就是用CallBack的形式來接收返回的數據:

mChannel.invokeMethod(RCMethodList.MethodCallBackGetUserInfo, userId, new Result() {
            @Override
            public void success(@Nullable Object arg) {
                if (arg instanceof Map) {
                    Map map = (Map) arg;
                    String userId = (String) map.get("userId");
                    String name = (String) map.get("name");
                    String portraitUri = (String) map.get("portraitUrl");
                    UserInfo userInfo = new UserInfo(userId, name, Uri.parse(portraitUri));
                    flutterCallBack.success(userInfo);
                }
            }

            @Override
            public void error(String s, @Nullable String s1, @Nullable Object o) {
                flutterCallBack.error("獲取用戶信息失敗:" + s, null);
            }

            @Override
            public void notImplemented() {
                flutterCallBack.error("flutter 端沒有實現getUserInfoByUserId接口", null);
            }
        });

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM