Rive

Rive 使用 Flutter 完全重写了其强大的动画工具,使开发人员能够创建精美、跨平台的插图。

目标

Rive 允许开发人员创建和交付精美、交互式的动画到任何平台。其开源运行时使创作者能够动画一次,然后在他们想要的任何平台上发布。

然而,情况并非总是如此。最初,团队花费了大量时间管理开发周期:为许多 UI 功能维护不同的客户端 Web 包、自定义构建流程、自定义 DevOps、自定义测试、代码风格检查、语言服务器等等——所有这些都来自需要维护和持续更新的单独软件包。

相反,团队希望有一个框架能够包含所有这些内容,确保工作流程这些方面的兼容性,以便他们能够更多地专注于开发,而不是维护。为了支持其强大的用户界面,并实现实时无故障动画,Rive 需要一个能够跨多个浏览器和平台处理繁重图形渲染的工具。于是,他们转向了 Flutter。

为什么选择 Flutter?

Rive 的第一个版本完全使用 JavaScript ES5 和 DOM 编写,这对 Web 来说效果很好,但除此之外没有其他用途。因此,接下来他们尝试了使用 ES6 的 React。他们使用了 webpack 和 CanvasKit 的早期版本,但维护所有不同的平台是一项重大的工作。

大约在同一时间,Rive 与 Flutter 团队合作参加了 Flutter Interact 活动。他们对 Flutter 了解得越多,就越觉得它适合 Rive。它提供了一个具有出色工具的凝聚力平台、一种强类型编程语言以及强大的语言分析工具,包括标准化的格式化程序、内置的代码风格检查、流行编辑环境的语言服务器,以及能够直接从编辑环境进行测试。

他们的解决方案

团队决定尝试一下 Flutter。他们使用 Flutter 中的 Canvaskit 构建了一个原型,并立即注意到有所改进。除了提供真正的跨平台解决方案外,它还使吸纳新工程师变得更加容易。他们也非常喜欢内置的测试功能,这使得维护应用程序的质量和稳定性变得更加容易。

结果

Rive 推出了完全使用 Flutter 构建的编辑器。他们的代码库现在更容易维护,并且允许工程师立即加入并开始编写代码。

他们还发现,在 Flutter 中添加自定义部分非常容易。功能构建更轻松、更有趣,并且设计师能够更好地进行调整和构建原型。这使他们能够在 Rive 中开发更丰富的体验,包括动画、交互式图形以及流畅且响应式的布局。

应用程序的整体稳定性也得到了提高。由于内置的测试功能,他们现在每次构建都会运行数千次测试,这使他们有信心转向每日发布周期。

基于他们的成功,团队现在正在努力为 MacOS 推出桌面应用程序。对于此版本,团队表示他们甚至不需要进行太多自定义,因为抽象工作已经完成。他们还发现,在 Flutter 中添加自定义部分非常容易。功能构建更轻松、更有趣,并且设计师能够更好地进行调整和构建原型。这使他们能够在 Rive 中开发更丰富的体验,包括动画、交互式图形以及流畅且响应式的布局。