
Rive
Rive 用 Flutter 完全重寫了其強大的動畫工具,使開發者能夠創作精美的多平臺插畫。
目標
Rive 讓開發者能夠建立精美且互動式的動畫並將其釋出到任何平臺。透過 Rive 的開源執行時,創作者只需製作一次動畫,便可在所需的任何平臺上進行釋出。
然而,情況並非一向如此。起初,團隊花費了大量時間來管理開發週期:維護用於實現各種 UI 功能的不同客戶端 Web 包、自定義構建流程、自定義開發運維、自定義測試、程式碼檢查(linting)、語言伺服器等等——所有這些都來自需要維護和不斷更新的獨立包中。
團隊希望擁有一種能夠涵蓋上述所有方面的框架,以確保工作流各環節的相容性,從而讓他們能更專注於開發,減少維護工作。為了支援其強大的使用者介面並實現即時、流暢的動畫效果,Rive 需要一個能夠跨多個瀏覽器和平臺處理繁重圖形渲染的工具。這時,他們選擇了 Flutter。
為什麼選擇 Flutter?
Rive 的第一個版本完全使用 JavaScript ES5 和 DOM 編寫,這對 Web 來說效果不錯,但除此之外別無他法。因此,他們接下來嘗試了 React 和 ES6。他們使用了 webpack 和早期版本的 CanvasKit,但維護所有不同平臺的工作量非常巨大。
大約在同一時間,Rive 正在與 Flutter 團隊合作籌備 Flutter Interact 活動。隨著他們對 Flutter 的瞭解加深,他們認為 Flutter 非常適合 Rive。它提供了一個具有出色工具鏈、強型別程式語言以及強大語言分析工具的統一平臺,包括標準化格式化工具、內建的程式碼檢查、適用於流行編輯環境的語言伺服器,以及直接從編輯環境進行測試的能力。
他們的解決方案
團隊決定嘗試使用 Flutter。他們用 Flutter 中的 CanvasKit 構建了一個原型,並立即發現了效能的提升。除了提供真正的多平臺解決方案外,新工程師的入職也變得容易多了。他們還非常喜歡其內建的測試功能,這使得維護應用的質量和穩定性變得更加簡單。
成果
Rive 推出了完全基於 Flutter 構建的編輯器。他們的程式碼庫現在更易於維護,並能讓工程師入職後立即開始編寫程式碼。
他們還發現,在 Flutter 中新增自定義元件非常容易。功能構建變得更加輕鬆有趣,設計師也更能自由地進行嘗試並構建原型。這使得他們能夠在 Rive 中開發出更豐富的體驗,包括動畫、互動式圖形以及流暢的響應式佈局。
應用的整體穩定性也得到了提升。得益於內建的測試功能,他們現在每次構建都會執行數千個測試,這讓他們有信心轉向每日釋出週期。
基於這一成功,團隊目前正致力於推出 MacOS 桌面應用程式。對於此次釋出,團隊表示由於抽象工作已經完成,他們幾乎不需要做太多定製。他們還發現,在 Flutter 中新增自定義元件非常容易。功能構建變得更加輕鬆有趣,設計師也更能自由地進行嘗試並構建原型。這使得他們能夠在 Rive 中開發出更豐富的體驗,包括動畫、互動式圖形以及流暢的響應式佈局。