美文网首页
Flutter.createView方法废弃

Flutter.createView方法废弃

作者: 禄子_c79b | 来源:发表于2022-03-27 22:10 被阅读0次

    首先是通过FlutterView引入Flutter页面,以前我们是通过io.flutter.facade包中Flutter类的createView()方法创建出一个FlutterView,然后添加到Activity的布局中,但是由于io.flutter.facade包的废弃,该方法已经无法使用。官方的文档有说明目前不提供在View级别引入Flutter的便捷API,因此如果可能的话,我们应该避免使用FlutterView,但是通过FlutterView引入Flutter页面也是可行的,代码如下:

    // 通过FlutterView引入Flutter编写的页面

     FlutterView flutterView = new FlutterView(this);
     FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(
        ViewGroup.LayoutParams.MATCH_PARENT,
        ViewGroup.LayoutParams.MATCH_PARENT);
     FrameLayout flContainer = findViewById(R.id.fl_container);
     flContainer.addView(flutterView, lp);
    // 关键代码,将Flutter页面显示到FlutterView中
    flutterView.attachToFlutterEngine(flutterEngine);
    

    需要注意,这里的FlutterView位于io.flutter.embedding.android包中,和此前我们所创建的FlutterView(位于io.flutter.view包中)是不一样的。我们通过查看FlutterView的源码可以发现它继承自FrameLayout,因此像一个普通的View那样添加就可以了。接下来的这一步很关键,调用FlutterView的attachToFlutterEngine()方法,这个方法的作用就是将Flutter编写的UI页面显示到FlutterView中,我们注意到这里传入了一个flutterEngine参数,它又是什么呢?flutterEngine的类型为FlutterEngine,字面意思就是Flutter引擎,它负责在Android端执行Dart代码,将Flutter编写的UI显示到FlutterView/FlutterActivity/FlutterFragment中。创建#FlutterEngine的代码如下:

    FlutterEngine flutterEngine = new FlutterEngine(this);
     flutterEngine.getDartExecutor().executeDartEntrypoint(
        DartExecutor.DartEntrypoint.createDefault()
    );
    

    这样就创建好了一个FlutterEngine对象,默认情况下FlutterEngine加载的路由名称为"/",我们可以通过下面的代码指定初始路由名称:

       flutterEngine.getNavigationChannel().setInitialRoute("route1");
    

    至于传参的情况没有变化,直接在路由名称后面拼接参数就可以了。当然,FlutterView也可以直接在xml布局文件中添加,最后同样需要调用attachToFlutterEngine()方法将Flutter编写的UI页面显示到FlutterView中,这里就不展示了
    原文链接:https://blog.csdn.net/ruiruiddd/article/details/115318612

    相关文章

      网友评论

          本文标题:Flutter.createView方法废弃

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