0%

【文章翻譯】How Flutter facilitates collaboration between designers and developers at L+R

【文章內容使用 Gemini 1.5 Pro 自動產生】

Flutter 如何促進 L+R 設計師和開發人員的合作

您可能熟悉 Global Citizen (GC),這是一個致力於消除世界貧困和幫助地球的組織。當 GC 想要重新編寫一個行動應用程式來幫助完成這項工作時,他們聯繫了我們的工作室 L+R,共同設計、開發和同步推出 Android 和 iOS 版本的應用程式。

Flutter 的靈活性、預建 Widget 清單和強大的動畫功能讓 L+R 團隊能夠實施以設計為導向的開發流程。使用 Flutter 時,我們的開發人員擁有一個空白畫布,可以將自訂設計變為現實。對於 L+R 來說,這意味著我們的設計團隊可以釋放他們的創造力,打造以使用者為中心的應用程式,這些應用程式看起來很棒,體驗也很棒。

以下是 Global Citizen 應用程式中的一些螢幕截圖:

設計流程

在開始新的客戶專案時,設計師首先在 Figma 中建立一個設計系統。這包括品牌指南 - 例如調色盤和文字排版 - 以及小的可重複使用元件。

在開始重寫 Global Citizen 應用程式時,設計團隊擴展了現有指南,以提供具有更高對比度元素的新面貌。這不僅有助於引導使用者的注意力,還改善了可訪問性。

UI 元素在 Figma 中被建立為 元件。每個元件可能具有不同的 變體,具體取決於元件類型或狀態。例如,下圖顯示了幾個按鈕變體:

在開發新的元件時,設計團隊參考了 Figma 中的 Material 和 iOS 設計套件以獲取靈感。這有助於將設計轉換為程式碼,因為這些 Figma 元件與 Material 和 Cupertino 函式庫中提供的 Widget 密切相關。

在整個設計過程中,團隊將小的可重複使用元件組合成更大的功能特定元件,然後將這些元件組合成完整的頁面。這使 Global Citizen 的產品團隊能够擴展應用程式,添加新的功能,同時保持與最初愿景的一致性。

專案範本

在 L+R,我們團隊從第一個公開發佈版本開始就一直在使用 Flutter。為了讓我們的團隊快速簡便地構建 Flutter 應用程式,我們建立了一個 開源儲存庫,它作為專案範本,為我們構建的所有 Flutter 應用程式提供了基石。

這個簡潔的專案包含一組可以自訂並用於客戶應用程式的 Widget。例如,Figma 設計檔案中所呈現的按鈕(如上所示)可以使用專案範本中的 _BaseButton 類別構建。此類別接受不同的顏色、文字樣式和內嵌,以最佳匹配為該專案設定的設計系統。

為了讓根據品牌指南輕鬆地為這些元件設定樣式,我們使用 ThemeData 類別。開發人員從 Figma 中取得顏色方案和文字樣式,並將它們對應到相應的主題屬性。

我們的團隊盡可能地利用 ThemeData 中現有的屬性,然後使用 ThemeExtension 功能完成剩餘的設定。

Flutter 的 Widget 函式庫

如上所述,專案範本包含一組可重複使用的 Widget。在開發這些 Widget 時,我們盡可能地使用 Material 和 Cupertino 函式庫中的預先存在的 Widget。在 Global Citizen 應用程式中,大約一半的元件來自 Material 或 Cupertino Widget。

例如,Material 中的 TextFieldTextFormField Widget 包含與設計相符的所有必要的自訂和功能。Material 中的 TextButton 也用於實作 _BaseButton Widget。在這種情況下,我們利用了 TextButton 現有的突出顯示功能,但我們將其包裝到一個具有擴展功能的新 Widget 中,以更好地滿足我們的需求。

擁有這些開箱即用的 UI 元件,可以輕鬆地為其設定樣式,這使得構建和維護我們的 Widget 變得更加容易。但是,有時我們的設計師會創建無法使用 Flutter 的 Material 或 Cupertino Widget 重新建立的自訂元件。在這些情況下,開發團隊會使用低階 Flutter Widget 創建我們自己的自訂 Widget。

Global Citizen 應用程式中的一個範例是進度指示器。對於這個應用程式,我們的設計師創建了一個自訂進度指示器,如以下 GIF 中所示。現有的 Material 和 Cupertino 進度指示器不適用於此設計。但是,我們的開發人員可以輕鬆地使用容器、行和列以及內在動畫創建一個全新的 Widget。

社群函式庫對於更複雜和靈活的元件也非常有用。例如,我們使用社群構建的 flushbarGlobal Citizen 應用程式中顯示警報通知。

熱重載

在將 Figma 設計轉換為 Flutter 程式碼時,設計師和開發人員的合作非常重要。設計師通常會提供回饋,導致樣式、佈局或動畫的微調。熱重載使這種合作變得更加高效。

使用熱重載,開發人員可以在與設計團隊進行螢幕共享時調整程式碼(無論是在 UX 階段、UI 概念階段、前端實施階段,甚至是在設計 QA 階段)。在螢幕共享時,設計師可以立即看到更改的結果。這使得除錯和迭代變得更快。

流暢的動畫

有助於應用程式感覺精緻的一件事是添加周到的動畫。Flutter 的動畫框架靈活而強大,但設計師可能難以理解。對我們團隊有所幫助的一件事是參考開源應用程式中的精美動畫。具體來說,我們查看了 Wonderous 應用程式 的程式碼庫。從那時起,我們利用了為 Wonderous 提供動力的開源函式庫 flutter_animate,為關鍵功能添加了簡單但豐富的動畫。

以下鏈接中的影片突出了「採取行動」流程的一部分,使用者在其中瀏覽一系列信息螢幕以了解有關問題的更多信息。

查看 action_learn_animations 影片。

使用 flutter_animate,我們能夠執行以下操作:

  • 在使用者向前移動時為步驟指示器製作動畫
  • 在頁面之間添加輕微的淡入淡出轉場
  • 在觀看影片後將「播放影片」按鈕轉換為成功勾號

總的來說,Flutter 允許設計和開發使用靈活的方法。Flutter 的預建 Widget 使創建可重複使用、可以設定樣式以匹配客戶品牌形象的 UI 元件變得更加容易。Flutter 社群在技術發展過程中發揮著重要作用,提供高品質的函式庫並擴展可用資源。Flutter 的關鍵功能(如熱重載)支持設計師和開發人員之間更好的協作。所有這些加在一起就會產生一個既美觀又實用的應用程式!

有關應用程式的更多信息,請查看 新 Global Citizen 應用程式:每日行動主義和可衡量的影響力,盡在您的口袋。您也可以 將 Global Citizen 應用程式下載 到您的行動裝置上。

L+R 是一個國際策略、設計和行動技術工作室。我們提供許多服務,例如 UX 設計、行動開發和策略咨詢。


Flutter如何促進L+R設計師和開發人員的合作 最初發佈在 Flutter 上的 Medium,人們在那裡透過突出顯示和回應這個故事來繼續討論。