Flutter混合开发二-FlutterBoost使用介绍

本文详细介绍了FlutterBoost的集成过程和使用方法,包括如何在Android原生项目中集成FlutterBoost,Flutter模块的创建,以及Flutter和原生页面的跳转。文章深入探讨了页面跳转的返回值问题及其两种修复方案,提供了实操示例和代码片段,适合开发者参考。
摘要由CSDN通过智能技术生成

前言

《Flutter混合开发专题一》中我们介绍了Flutter官方提供的混合开发解决方案,但是其存在着一些问题并没有解决,比如原生和Flutter页面叠加跳转由于Flutter Engine重复创建而导致内存暴增的问题、Flutter应用中全局变量在各独立页面不能共享的问题、iOS平台内存泄露的问题等等,目前官方在混合开发解决方案上并没有花太多的时间去改进优化。

国内很多大厂在去年已经开始研究Flutter,并在现有项目中完成了集成,其中阿里闲鱼团队研究比较早且投入精力比较大,闲鱼APP在2018年就已经集成了Flutter,且最初用在了打开最多的商品详情页面,前期闲鱼为了解决混合开发的问题开发了一套混合开发插件hybridstackmanager,项目开源地址为https://github.com/alibaba-flutter/hybridstackmanager,该方案的一个特点是具有侵入性,需要修改Flutter框架的源码,且在复杂的页面场景中有一定局限性,因此,闲鱼团队接下来开发了新一代混合开发技术方案FlutterBoost,并在今年3月初进行了开源。

FlutterBoost介绍

点击查看闲鱼团队的文章了解FlutterBoost详细介绍

https://mp.weixin.qq.com/s/v-wwruadJntX1n-YuMPC7g

FlutterBoost集成

由于FlutterBoost封装成了插件,所以集成是非常简单的,只需要对工程进行少量代码接入即可。下面以一个Demo工程为例详细了解一下接入方式。

例子工程

我们有一个原生Android项目FBDemo,需要基于此项目引入Flutter开发新的页面,我们可以在FBDemo同级目录创建一个Flutter module项目,取名为flutter_boost_module,将Flutter module项目引入集成到原生项目中,集成方式参考《Flutter混合开发专题一》。这时我们就可以在Flutter module项目中开发新的Flutter页面了。下面就集成FlutterBoost的方式分步说明

Flutter module项目集成FlutterBoost

flutter_boost_module项目的pubspec.yaml文件中添加依赖插件配置

dependencies:
  flutter_boost: ^0.0.411

配置完成后执行flutter packages get命令下载依赖插件到本地。

安卓原生项目中集成FlutterBoost

Flutter module项目引入FlutterBoost插件后,在Android studio中同步原生工程,同步完成后项目结构如下

然后我们就可以引入FlutterBoost的安卓工程代码了,在app目录下的build.gradle中添加以下项目依赖


dependencies {
	 ...
	 
    implementation project(':flutter_boost')
}

Flutter module项目使用FlutterBoost

假设我们使用Flutter创建两个页面Widget:FirstPageSecondPage

首先我们需要在main方法中运行的rootWidget中注册这两个页面。

@override
void initState() {
	super.initState();
	
	FlutterBoost.singleton.registerPageBuilders({
      'flutterbus://flutterFirstPage': (pageName, params, _) {
        print("first flutterPage params:$params");
        ...
        return FirstPage();
      },
      'flutterbus://flutterSecondPage': (pageName, params, _) {
        print("second flutterPage params:$params");
        ...
        return SecondPage();
      },
    });
	
	FlutterBoost.handleOnStartPage();
}

@override
Widget build(BuildContext context) {
	return MaterialApp(
	    title: 'Flutter Boost example',
	    builder: FlutterBoost.init(),
	    home: Container());
}

安卓原生项目中使用FlutterBoost

Flutter引擎加载及FlutterBoostPlugin初始化

首先,根据FlutterBoost给的例子我们原生项目的Application需要继承FlutterApplication,其实这个不是必须的,FlutterApplication中主要是在onCreate方法中初始化加载flutter.so库,该操作我们可以在适当的地方自己来加即可。

其次,FlutterBoost的example中在自定义的Application的onCreate方法中初始化FlutterBoostPlugin,这个我们可以提取出来放到一个单独的类里。

基于以上两点我实现了一个工具类用来执行FlutterBoost的初始化

public class FlutterMediator {
    public static void init(final Application app) {
        //此处必须启动初始化,主要是载入Flutter引擎文件
        FlutterMain.startInitialization(app);

        FlutterBoostPlugin.init(new IPlatform() {
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值