原帖:
link
上文在介绍Android原生页面跳转Flutter页面时提到了两种方案:FlutterView和FlutterFragment,我们来分别看一下现在应该如何实现。
首先是通过FlutterView引入Flutter页面,以前我们是通过io.flutter.facade包中Flutter类的createView()方法创建出一个FlutterView,然后添加到Activity的布局中,但是由于io.flutter.facade包的废弃,该方法已经无法使用。官方的文档有说明目前不提供在View级别引入Flutter的便捷API,因此如果可能的话,我们应该避免使用FlutterView,但是通过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);
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端提示get
FlutterView()
方法找不到
2、文档代码(提示get
FlutterView()
方法找不到):
new MethodChannel(get
FlutterView(), 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集成到现有项目功能依旧处于pre
view状态(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 文件复制到正确的位置。
希望这些解决方案可以帮助您解决问题。