返回
FlutterBoost 1.0 到 2.0:我的改造之路
IOS
2023-09-11 00:52:43
引言
在大规模应用开发中,为了充分利用 Flutter 的优势,同时保留 Native 的强大功能,混合开发成为一种不可避免的选择。然而,Flutter 本身是一个单容器的应用,直接引入 SDK 会导致页面在 Flutter 和 Native 之间切换不流畅,路由管理混乱等问题。为了解决这些问题,FlutterBoost 应运而生。
FlutterBoost 是阿里巴巴开源的一个 Flutter 混合开发框架,它提供了页面路由管理、Flutter 和 Native 页面混合开发、热重载等功能,极大方便了混合开发的流程。
最近,FlutterBoost 发布了 2.0 版本,带来了许多新特性和改进。为了享受这些新特性,我决定将我们的项目从 FlutterBoost 1.0 升级到 2.0。本文将记录我升级过程中的经验和解决遇到的问题的方案,希望能为其他开发者提供参考。
升级前的准备
在升级之前,我们需要先对项目进行一些准备工作:
- 更新 Flutter SDK:FlutterBoost 2.0 要求 Flutter SDK 为 2.5.0 或更高版本。
- 备份代码:在升级之前,请务必备份项目代码,以防万一升级失败。
升级过程
升级过程相对简单,主要步骤如下:
- 更新依赖项:在 pubspec.yaml 文件中,将 FlutterBoost 的依赖项版本更新为 2.0.0。
- 迁移代码:FlutterBoost 2.0 对 API 做了一些改动,需要对代码进行相应的迁移。具体迁移方法可以参考 FlutterBoost 的官方文档。
- 编译运行:更新依赖项并迁移代码后,重新编译运行项目,检查是否有错误。
遇到的问题
在升级过程中,我遇到了以下几个问题:
- 页面跳转不流畅: 升级后,发现页面在 Flutter 和 Native 之间跳转时会出现卡顿现象。经过排查,发现是由于 FlutterBoost 2.0 中默认启用了新特性
transparentCallNativeRouter
,导致页面跳转时需要先创建 Flutter 引擎,然后再加载页面,从而增加了跳转时间。解决方法是关闭transparentCallNativeRouter
特性。 - 路由管理混乱: 在 FlutterBoost 1.0 中,路由管理是由
FlutterBoost
类统一管理的。但在 FlutterBoost 2.0 中,路由管理被拆分到了FlutterBoost
和NativeRouter
两个类中。这导致路由管理变得更加复杂,需要仔细阅读官方文档才能弄清楚。 - 热重载不生效: 升级后发现,热重载功能失效了。经过排查,发现是因为 FlutterBoost 2.0 中对热重载的实现方式做了改动。解决方法是按照官方文档更新热重载的配置。
升级后的收益
经过一番折腾,终于完成了 FlutterBoost 1.0 到 2.0 的升级。升级后,项目获得了以下收益:
- 性能优化: FlutterBoost 2.0 对页面加载和渲染进行了优化,页面跳转更加流畅。
- 新特性: FlutterBoost 2.0 引入了许多新特性,例如透明化调用 Native 路由、支持 Web 视图、支持自定义路由动画等。这些新特性极大地增强了 FlutterBoost 的功能和灵活性。
- API 简化: FlutterBoost 2.0 对 API 进行了简化,使开发人员更容易上手和使用。
总结
总体而言,FlutterBoost 2.0 是一个非常好的升级。它带来了许多新特性和改进,极大提升了 Flutter 混合开发的体验。虽然升级过程会遇到一些问题,但只要仔细阅读官方文档并耐心排查,都能顺利解决。
希望本文能对其他开发者升级 FlutterBoost 提供帮助。如果您在升级过程中遇到任何问题,欢迎留言交流。