作者回复: Debug环境吧?Release环境加载会快很多,另外可以考虑提前把引擎初始化
作者回复: OpenNativePage,closeFlutterPage这两个方法可以增加参数
作者回复: flutteView确实有内存泄漏问题,不过问题不大,技术上可以通过全局共享VC解决,实际落地尽量让业务闭环在Flutter内部即可。
对于纯flutter应用,整个页面都是flutter渲染的,不涉及跨技术栈的渲染切换,自然也就不需要重建和释放了。
作者回复: 保证整体效果一致,有两种方案:
一是,分别定制原生工程(主要是Android)的切换动画,及Flutter的切换动画;
二是,使用类似闲鱼的共享FlutterView的机制,将页面切换统一交由原生处理,FlutterView只负责刷新界面。
作者回复: 把flutter容器做成单例,提前初始化好
作者回复: 是,但是你需要自己去清理和恢复engine的运行上下文,可能会出现为定义的异常或者bug
作者回复: 一般是直接用acrivity,否则你需要单独隐藏工具栏。crash倒从来没遇到过,你可以查一下具体的报错信息
作者回复: 如果不做特殊定制(头条或闲鱼的方案),是的
作者回复: 对;理论上是,但考虑到Flutter引擎有内存泄漏问题,如果Flutter页面需要反复打开,不建议采用这种方式回收内存,可以考虑将Flutter容器做成一个单例。
作者回复: draw.io
作者回复: FlutterEngine内部实现存在循环引用的情况,所以会有内存泄漏的问题。不过一般的混合应用只会创建一个FlutterViewController,或者纯FlutterApp全部都是FlutterViewController,不释放其实也没什么问题。如果真的需要关闭flutter容器,可以把FlutterViewController缓存起来(作为单例使用)。