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

本文详细介绍了在安卓原生项目中如何使用FlutterBoost,包括Flutter引擎加载、FlutterBoostPlugin初始化、Flutter页面对应的Native容器创建,以及各种页面跳转路由的实现。此外,还讨论了页面跳转的返回值问题及其解决方案,提供了Flutter页面和Native页面互相跳转的实例代码。
摘要由CSDN通过智能技术生成

void initState() {
super.initState();

FlutterBoost.singleton.registerPageBuilders({
‘flutterbus://flutterFirstPage’: (pageName, params, _) {
print(“first flutterPage params:KaTeX parse error: Expected 'EOF', got '}' at position 35: …n FirstPage(); }̲, 'flutterbus:/…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() {
@Override
public Application getApplication() {
return app;
}

@Override
public Activity getMainActivity() {
return MainActivity.sRef.get();
}

@Override
public boolean isDebug() {
return true;
}

@Override
public boolean startActivity(Context context, String url, int requestCode) {
Debuger.log(“startActivity url=”+url);

return PageRouter.openPageByUrl(context,url,requestCode);
}

@Override
public Map getSettings() {
return null;
}
});
}
}

这样,我们在原生项目中的自定义Application的onCreate方法中只需要调用FlutterMediator.init(this);方法即可完成FlutterBoost的初始化了。其中MainActivity应该是一直存在栈底的Activity,一般是我们的首页。

Flutter页面对应Native容器

FlutterBoost初始化完成之后,针对Flutter中的FirstPageSecondPage页面我们需要在原生中创建对应的Native容器,即FlutterBoost中定义的Container,可以是Activity也可以是Fragment,这里我们使用Activity实现,

// Flutter中FirstPage对应的Native container

public class FlutterFirstPageActivity extends BoostFlutterActivity {
private int id = 0;
private String name;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent intent = getIntent();
if(intent != null) {
String url = intent.getStringExtra(“

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值