Flutter Android FlutterEngineCache 启动白屏。分析与解决 耗时2days
Posted 安果移不动
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Flutter Android FlutterEngineCache 启动白屏。分析与解决 耗时2days相关的知识,希望对你有一定的参考价值。
项目背景
原生android 集成 Flutter Module
原生Android里面加了一个入口。这个入口跳进去是Flutter页面 但是需要传递路由参数并与原生形成交互
最下面是解决方案。上面是整个的采坑流程。这个坑还很深。还没空往下看看是为什么。因为项目在走迭代。以后感兴趣或者是有能力分析出来的小伙伴可以发博客给我看看
todo
解决方案可能有点野 但是解决了。。。官方文档没有的部分。。。。因为官方都想不到。你要这么整!
解决方案就是没有使用 FlutterEngineCache的方式启动 直接使用集成的方式 然后这个与原生交互就完成了对吧
class MyFlutterActivity : FlutterActivity() {
override fun configureFlutterEngine(flutterEngine: FlutterEngine) {
super.configureFlutterEngine(flutterEngine)
MethodChannel(flutterEngine.dartExecutor.binaryMessenger, FlutterRouterUtils.CHANNEL)
.setMethodCallHandler(ETGMethodCallHand(activity))
}
}
那么问题来了。这个这个。。路由是怎么解决的。这里没有路由方法调用
fun initFlutterCachedEngine(
content: Context,
flutterEngine: FlutterEngine,
mRouterPath: String
) {
// Instantiate a FlutterEngine.
MethodChannel(flutterEngine.dartExecutor.binaryMessenger, CHANNEL)
.setMethodCallHandler(ETGMethodCallHand(content))
flutterEngine.getNavigationChannel().setInitialRoute(mRouterPath)
// Start executing Dart code to pre-warm the FlutterEngine.
flutterEngine.dartExecutor.executeDartEntrypoint(
DartExecutor.DartEntrypoint.createDefault()
)
// Cache the FlutterEngine to be used by FlutterActivity or FlutterFragment.
FlutterEngineCache
.getInstance()
.put(ENGINE_XIAOKAISHUATI, flutterEngine)
}
先初始化这个引擎并绑定这个
但是这个路由是怎么设置上去的呢?
以上是关于Flutter Android FlutterEngineCache 启动白屏。分析与解决 耗时2days的主要内容,如果未能解决你的问题,请参考以下文章
Flutter(六)Android与Flutter混合开发(Hybird)