
Rive
Rive 使用 Flutter 完全重写了其强大的动画工具,让开发者能够创建精美、多平台的插图。
目标
Rive 允许开发者创建和发布精美、交互式动画到任何平台。他们的开源运行时使得创作者只需动画一次,即可在任何他们想要的平台上发布。
然而,情况并非总是如此。一开始,团队花费了大量时间管理开发周期:为许多 UI 功能维护不同的客户端 Web 包,一个自定义构建过程,自定义开发运维,自定义测试,代码检查,语言服务器等等——所有这些都来自需要维护和不断更新的独立包。
相反,团队需要一个能包含所有这些功能的框架,确保工作流这些方面的兼容性,这样他们就可以更专注于开发,而不是维护。为了支持其强大的用户界面,并实现无故障的实时动画,Rive 需要一个能够处理多个浏览器和平台上的重度图形渲染的工具。这时他们转向了 Flutter。
为什么选择 Flutter?
Rive 的第一个版本完全用 JavaScript ES5 和 DOM 编写,这对于 Web 来说很好,但对于其他方面则不然。所以接下来他们尝试了 React 和 ES6。他们使用了 webpack 和 CanvasKit 的早期版本,但维护所有不同平台需要付出巨大的努力。
大约在同一时间,Rive 与 Flutter 团队合作举办了 Flutter Interact 活动。他们对 Flutter 了解得越多,就越觉得它适合 Rive。它提供了一个具有出色工具的统一平台,一种强类型编程语言,以及强大的语言分析工具,包括标准化格式化程序、内置的代码检查、适用于流行编辑环境的语言服务器,以及直接从编辑环境进行测试的能力。
他们的解决方案
团队决定尝试一下 Flutter。他们用 Flutter 和 Canvaskit 构建了一个原型,并立即注意到了改进。除了提供真正的多平台解决方案外,新工程师的上手也变得容易得多。他们还非常喜欢内置的测试功能,这使得维护应用程序的质量和稳定性变得更加容易。
成果
Rive 发布了完全用 Flutter 构建的编辑器。他们的代码库现在更容易维护,工程师可以立即上手并开始编写代码。
他们还发现,在 Flutter 中添加自定义组件非常容易。功能构建更简单、更有趣,设计师能够更好地调整和构建原型。这使得他们能够在 Rive 中开发出更丰富的体验,包括动画、交互式图形以及流畅和响应式布局。
应用程序的整体稳定性也得到了改善。得益于内置的测试功能,他们现在每次构建都运行数千个测试,这让他们有信心转向每日发布周期。
基于他们的成功,团队现在正致力于为 macOS 发布桌面应用程序。团队表示,对于这个版本,他们甚至不需要进行太多定制,因为抽象化工作已经完成。他们还发现,在 Flutter 中添加自定义组件非常容易。功能构建更简单、更有趣,设计师能够更好地调整和构建原型。这使得他们能够在 Rive 中开发出更丰富的体验,包括动画、交互式图形以及流畅和响应式布局。