原帖: link

上文在介绍Android原生页面跳转Flutter页面时提到了两种方案:FlutterView和FlutterFragment,我们来分别看一下现在应该如何实现。
首先是通过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中,这里就不展示了。

原帖: link上文在介绍Android原生页面跳转Flutter页面时提到了两种方案:FlutterView和FlutterFragment,我们来分别看一下现在应该如何实现。首先是通过FlutterView引入Flutter页面,以前我们是通过io.flutter.facade包中Flutter类的createView()方法创建出一个FlutterView,然后添加到Activity的布局中,但是由于io.flutter.facade包的废弃,该方法已经无法使用。官方的文档有说明目前不提供在Vie Flutter Google推出已经已经一年多了,单个 Flutter 项目的开发流程已经很成熟了。对与个人开发者来说使用 Flutter 开发一个跨平台的App挺有意思。但是对于现有的项目改造来说还是不建议,Flutter 中的控件还没有完全能满足我们的要求,我们需要解决这个问题会消耗我们大量的研发资源。 虽然 Flutter 无法接入我们的项目,但是我们可以尝试者去模仿 Flutter... 目前Flutter可以说是非常火热了,多次更新过后也越来越稳定,受到了很多开发者的青睐。不过纯Flutter开发还是存在一定成本和风险的,尤其是对于规模稍大一些的项目,可能更加适合的是将Flutter用于项目中的某一个模块,因此我们有必要了解一下如何在原生项目中引入Flutter。 本文介绍一下Android原生项目引入Flutter方法以及Flutter如何与原生进行交互,包括页面间的跳转和方法的调用,本人不懂IOS开发,有需要的话还是自行百度吧o(╥﹏╥)o,但是基本思路我觉得不会差太多的.
1、问题描述: Flutter插件开发按官方文档提示创建插件Android端提示getFlutterView()方法不到 2、文档代码(提示getFlutterView()方法不到): new MethodChannel(getFlutterView(), CHANNEL).setMethodCallHandler( new MethodChannel.MethodCallHandler() { @Override
持续更新中 … flutter packages pub run build_runner watch 4,flutter混合开发运行报错:VM snapshot must be valid. /Check failed: vm. Must be able to initialize the VM; 解决方案:https://www.jianshu.com/p/9b96999fc385 1.在...
flutter踩坑记录目录 flutter踩坑记录(一)--项目准备阶段 https://blog.csdn.net/hjr365708064/article/details/95454939 flutter踩坑记录(三)-- 项目打包https://blog.csdn.net/hjr365708064/article/details/95473183 通过上一篇的踩坑记录(一),我...
参考https://github.com/flutter/flutter/wiki/Add-Flutter-to-existing-apps 创建flutter module项目 比如现有android项目的目录为~/myDemo/,则直接在原有项目同级目录~下执行如下命令创建flutter module项目。 flutter create -t module my_flutter 执行上述命令...
官方详细文档地址:https://github.com/flutter/flutter/wiki/Add-Flutter-to-existing-apps Flutter集成到现有项目功能依旧处于preview状态(2019.01.06) 操作环境:MAC/Linux 如果要集成到现有项目,需要切换Flutter SDK的...
2. 运行 `flutter build web` 命令来重新生成 flutter.js 文件。 3. 确认您的 index.html 文件中正确地包含了 flutter.js 文件。例如: ```html <script defer src="main.dart.js" type="application/javascript"></script> <script defer src="packages/flutter_web/asset/dart_ui/flutter_web_ui.js" type="application/javascript"></script> <script defer src="packages/flutter_web/asset/dart_ui/hooks.dart.js" type="application/javascript"></script> <script defer src="flutter.js" type="application/javascript"></script> 4. 如果您使用了自定义的构建工具或持续集成系统,可能需要手动将 flutter.js 文件复制到正确的位置。 希望这些解决方案可以帮助您解决问题。