flutter boost使用简介(踩坑记录,持续更新)

前言
    最近在研究android和flutter的混合开发。插件模式调用原生的混合模式已经在项目中使用,也暴露出一些问题,
最突出的问题就是flutter中对webview的支持,会出现各种各样奇怪的问题还没办法解决(也许修改flutter源码可
解决)。所以考虑尝试用原生打开flutter页面的混合方式进行开发。咸鱼团队也推出了这种混合开发模式的框架
flutter boost。下面就是我在使用该框架中遇到的问题以及解决的方法,持续更新
环境说明

开发工具:Android Studio
Flutter版本:2.0.3
Flutter Boost版本:v3.0-hotfixes

集成过程

flutter boost项目地址
先吐槽下,项目介绍里提供的集成说明简陋的一批,按它的方法能成功集成才有鬼

  1. 创建一个安卓项目:DemoOne

  2. 给项目添加flutter module:flutter_module(可是使用命令行,也可以用IDE的插件完成,我这边是通过IDE的插件完成的,需要IDE安装flutter和dart两个插件)
    添加完成后,settings.gradle和build.gradle会有以下变化
    在这里插入图片描述
    在这里插入图片描述

  3. 将flutter boost以插件的方式配置到flutter_module里

  4. 在build.gradle中添加flutter boost依赖,如下图
    在这里插入图片描述

完成上面3步,在真机上运行安卓项目,如果能正常启动,恭喜你,可以继续集成之路了。我运行安卓项目的时候很诡异,第一次能正常启动,我按上面的步骤又搭了一遍项目,报错!!!各种搜不到解决方法,我就在真机上debug运行了flutter_module项目,再运行安卓项目,正常了!!!!!!

  1. 安卓项目中创建MyApplication类,继承自FlutterApplication(注意,不是原生的Application),然后在onCreate中初始化flutter boost
    class MyApplication : FlutterApplication() {
        override fun onCreate() {
            super.onCreate()
            //初始化flutter boost
            /**
             * 1.使用ENGINE_ID初始化flutter engine,全局共享一个engine
             * 2.设置消息代理
             */
            FlutterBoost.instance().setup(this, MyFlutterBoostDelegate(), null)
        }
    }
    
  2. 点击按钮打开flutter页面
    private lateinit var openFlutterBtn:Button
        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            setContentView(R.layout.activity_main)
    
            openFlutterBtn = findViewById(R.id.open_flutter_btn)
            openFlutterBtn.setOnClickListener {
                openFlutter()
            }
        }
    
        private fun openFlutter(){
            val params = HashMap<String, Any>()
            params["test1"] = "v_test1"
            params["test2"] = "v_test2"
    
            val intent = FlutterBoostActivity.CachedEngineIntentBuilder(
                FlutterBoostActivity::class.java, FlutterBoost.ENGINE_ID
            )
                .backgroundMode(FlutterActivityLaunchConfigs.BackgroundMode.opaque)
                .destroyEngineWithActivity(false)
                .url("flutterPage")
                .urlParams(params)
                .build(this)
            startActivity(intent)
        }
    
    针对打开flutter页面,我大概整理了一下关键的几个类和大概的一个流程
    在这里插入图片描述
    在这里插入图片描述
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值