美文网首页Flutter
Flutter与原生混合开发之:原生与Flutter通信与交互

Flutter与原生混合开发之:原生与Flutter通信与交互

作者: 程序狮 | 来源:发表于2019-12-05 19:03 被阅读0次

    上一篇 讲到原生集成Flutter,自己新建的Activity,在此类添加通信

    1、Flutter调用原生时

        //channel的名称,由于app中可能会有多个channel,这个名称需要在app内是唯一的。
        private static final String CHANNEL = "platformMehotd";
        private MethodChannel mothodChannel;
    
        @Override
        public void configureFlutterEngine(@NonNull FlutterEngine flutterEngine) {
            mothodChannel = new MethodChannel(flutterEngine.getDartExecutor(), CHANNEL);
            mothodChannel.setMethodCallHandler(new MethodChannel.MethodCallHandler() {
                @Override
                public void onMethodCall(MethodCall methodCall, MethodChannel.Result result) {
                        //call.method是获取调用的方法名字
                       //call.arguments 是获取参数
                }
            });
        }
    

    flutter调用原生直接返回结果

            if (call.method.equals("getBatteryLevel")) {
                int batteryLevel = getBatteryLevel();
                if (batteryLevel != -1) {
                    result.success(batteryLevel); // 相当于是调用方法的return
                } else {
                    result.error("UNAVAILABLE", "Battery level not available.", null); // 告诉调用者失败了
                }
            } else {
                result.notImplemented(); // 告诉调用者没有此方法,避免一直等到阻塞在这
                    break;
            }
    

    MethodChannel是方法通讯的方式,一共3种方式,这篇只讲MethodChannel,

    mothodChannel.setMethodCallHand

    2、原生调用Flutter

    // 第一个参数是方法名,第二个参数是参数
    mothodChannel.invokeMethod("login", true);
    

    3、原生打开指定的Flutter页面

    Intent intent1 = new Intent(mContext, FlutterBaseActivity.class);
    // 设置route,在Flutter中可以获取fangRoute
    intent1.putExtra("initial_route", "fangRoute");
    startActivity(intent1);
    

    4、Flutter获取原生要跳转的route(在main文件build方法中获取)

    String routeName = window.defaultRouteName;
    //此时routeName就是上面传过来的fangRoute,在这可以通过不同的route返回不同的界面
    Utility.mjPrint('routeName: $routeName');
    

    上一章: Flutter与原生混合开发之:原生集成Flutter

    相关文章

      网友评论

        本文标题:Flutter与原生混合开发之:原生与Flutter通信与交互

        本文链接:https://www.haomeiwen.com/subject/ngrjgctx.html