Logo_InProduction_3.png

慶祝 Flutter 的生產時代

概覽

Flutter 已從一個雄心勃勃的 UI 框架發展成為一個生產級解決方案,受到全球一些最大品牌的信賴。這些品牌正在使用 #FlutterinProduction 來打造令人驚歎的體驗,這些體驗可在不同平臺上無縫執行,並具有出色的效能——所有這些都得益於廣泛的生態系統和卓越的開發者體驗。

敬請關注!
3.27 image.webp

最新訊息

Flutter 3.27

閱讀 Flutter 和 Dart 最新版本(Flutter 3.27 和 Dart 3.6)的最新更新。

閱讀部落格

Flutter 生產日程

FiP_SVTD_Keyart_A (1).png

2024 年 12 月 17 日:活動日

所有時間均為太平洋標準時間 (PST)

11:00 - 11:30

#FlutterInProduction

無論您是經驗豐富的專業人士還是初學者,您都將從 Flutter 使用者故事中獲得新的見解和靈感,瞭解 Flutter 技術負責人介紹的最新功能,並在本次多片段虛擬活動中瞭解 Flutter 應用開發的未來。

演講者

    安德魯·布羅格登

    裡弗斯·科莫

11:30 - 11:45

#問Flutter

Flutter 團隊負責人 Todd Volkert、John McCutchan 和 Michael Thomsen 現場回答社群提交的關於 Flutter 的問題!

演講者

    克雷格·拉本茨

    邁克爾·湯姆森

    託德·沃爾克特

    約翰·麥卡琴

2024 年 12 月 19 日:可觀測的 Flutter

所有時間均為太平洋標準時間 (PST)

09:00 - 10:00

技術負責人小組討論

對於在企業開發環境中使用 Flutter 構建應用程式有什麼疑問嗎?讓使用 Flutter 進行生產的公司技術負責人來回答這些問題。

演講者

    克雷格·拉本茨

社群活動

查詢您附近的活動

community_events_page_dash.png

社群聚會

查詢您附近的 #FlutterInProduction 本地觀看派對!

Betterment 是一家管理著數十億美元資產的領先機器人顧問公司,它選擇 Flutter 來實現一個流暢、響應迅速且能輕鬆處理複雜金融資料的應用程式。Flutter 提供接近原生效能的能力確保了無縫的使用者體驗,從而贏得了 Betterment 龐大客戶群的信任。


在本次採訪中,Betterment 的高階軟體工程師兼 Flutter 遷移核心貢獻者 Will Lockwood 分享了一個由 5 名工程師組成的小團隊如何啟動一個試點專案,最終改變了 Betterment 整個移動開發格局的內幕故事。他揭示了在安全性和可靠性至關重要的海量以使用者為中心的應用程式中採用 Flutter 所面臨的挑戰、取得的成功以及意想不到的好處。


準備好深入瞭解 Betterment 的 Flutter 經驗,瞭解他們如何利用“新增到應用程式”實現無縫過渡,並發現這一決策不僅改進了他們的應用程式,還增強了他們的整個組織。


Play StoreApple Store 下載 Betterment。


您能分享 Betterment 將一個大型、成熟的原生應用程式遷移到 Flutter 的經驗嗎?在此過程中您遇到了哪些主要挑戰和好處?


大家好,我叫 Will Lockwood,我是 Betterment 的高階工程師。自 2020 年初以來,我們一直在使用 Flutter 開發面向消費者的生產應用程式,該應用程式擁有數百個螢幕,服務近百萬使用者。


我們選擇 Flutter 是為了透過構建一個應用程式而不是兩個應用程式來提高移動開發的效率和效力。


然而,我們已經有兩個應用程式在生產環境中部署了近 7 年。對於金融應用程式來說,安全性、可靠性和使用者連續性至關重要——暫停所有新產品開發,一次性向使用者釋出一個全新的應用程式對我們的業務來說是不可行的,而且風險太大。


我們必須進行增量遷移,以便在我們的工程師掌握新語言和框架的同時,我們能夠繼續釋出功能。從這個意義上說,Flutter 的“新增到應用程式”功能使其成為可能;我們在現有應用程式中嵌入了一個新應用程式,然後它慢慢地取代了越來越多的原生體驗,直到所有的原生體驗都消失了。


我們立即感受到了好處,而且這些好處不僅僅是因為一次性構建更便宜


透過統一一套最佳實踐和基礎設施,我們可以更有效地培訓工程師,並以比以往更高的質量在 Flutter 中交付功能。擁有一個應用程式進行監控使我們更有效地預防和響應事件。而且,統一的移動開發也促進了移動工程師與我們組織其他部門之間更簡單、更好的協作,從而提高了我們組織其他部門的效率。


在 Flutter 中重建我們的設計系統,加深了移動工程師與我們設計團隊之間的聯絡,使我們能夠跨平臺提供更一致、更美觀的使用者介面,包括支援深色模式和平臺特定的體驗。構建一個移動 API 客戶端極大地簡化了與後端工程師的維護和協作,以至於我們決定更進一步,統一移動和 Web 的 API。


Flutter 的宣告式 UI 設計正規化幫助我們統一了 Web 和移動端的架構模式,從而促進了使用 React 的 Web 工程師和使用 Flutter 的移動工程師之間更豐富的協作。


雖然完全完成我們的 Flutter 遷移是一個長達數年的挑戰,但我們的整個組織因此變得更好——我們不僅現在擁有更好的應用程式,而且這些改進具有感染力。


Flutter 滿足了我們所有的需求,但在其他選項中,對我們來說最主要的區別在於開發者體驗——比如 IDE 整合、開發工具、優雅的依賴管理、流暢的升級——這讓我們相信我們的移動工程師可以儘可能高效地使用 Flutter。


隨著我們的進步,Flutter 和 Dart 也得到了改進。社群不斷為移動應用開發的常見模式構建新的解決方案和工具,而 Dart 團隊不斷髮布主要的、基礎性的功能(如健全的空安全、記錄和模式匹配以及即將推出的宏功能),這些功能始終為我們提供了更流暢、更可靠、更靈活的開發者體驗。


隨著 Flutter 在生產環境中大規模應用近五年,我們對我們的選擇感到滿意。增量遷移是一個重大的技術挑戰,但我們的成功使我們的應用程式變得更好,我們的移動工程師和組織更強大,並且它繼續為我們組織的其它部門和我們的業務帶來意想不到的回報。

BlendAI 是一款 AI 驅動的照片編輯器,在移動平臺上的下載量超過 200 萬。使用 Flutter,Blend 能夠在 Android 和 iOS 應用程式中共享 98% 的程式碼,這使得他們由 2-3 名工程師組成的精幹團隊能夠支援所有這些使用者。


在這篇文章中,我們深入探討了 Blend 的成功故事。Blend 是一款 AI 驅動的標誌製作工具,由三名工程師組成的精幹團隊成功積累了數百萬次安裝。請加入我們,與 Jamsheed Kamardeen(首席技術官)和 Chinmay Kabi(高階移動應用開發人員)聊聊他們決定擁抱 Flutter 的原因,以及 Flutter 如何幫助他們克服影像處理、跨平臺一致性和快速迭代的複雜性。


瞭解 Blend 如何利用 Flutter 的渲染精度、自定義 UI 功能和效能最佳化工具,在不同裝置上提供無縫的使用者體驗。我們將探討他們解決效能瓶頸的巧妙方案、測試和部署方法,以及他們對 Flutter 在雄心勃勃的專案中長期潛力的見解。


Play 商店Apple 商店下載該應用。


哪些因素促使您的團隊選擇 Flutter 來開發生產級應用程式,以及它是否符合您的預期?


  • 渲染精度:Flutter 的渲染引擎可確保在不同裝置生態系統中實現畫素級的完美一致性。這對於我們以圖形為導向的產品至關重要,因為視覺保真度是首要考慮因素。
  • 跨平臺效率:我們實現了 98% 的跨平臺程式碼共享,顯著減少了開發時間和維護開銷。這種效率水平在其他跨平臺框架中是無與倫比的。
  • 效能:Flutter 對釋出版本進行提前(AOT)編譯,可實現接近原生的效能,這對於設計密集型應用程式中的流暢使用者互動至關重要。
  • 自定義 UI 元件:Flutter 的小部件系統允許我們建立高度定製化、可重用的 UI 元件,這些元件在整個應用程式中保持一致性,從而提高開發速度和使用者體驗。
  • 熱過載:此功能極大地改善了我們的開發週期,使我們能夠即時迭代設計和功能,這對於以視覺為導向的產品至關重要。
  • 強大的生態系統:強大的 Flutter 生態系統,包括各種第三方軟體包,加速了我們的開發。

Flutter 不僅滿足而且超出了我們的預期,使我們能夠以卓越的開發效率跨平臺交付高效能、視覺一致的應用程式。


Flutter 如何幫助您簡化跨平臺開發,以及它對您的開發速度和資源分配產生了什麼影響?

Flutter 在簡化我們的跨平臺開發方面發揮了關鍵作用,使 Blend 能夠保持精幹高效的團隊,同時在全球範圍內提供高質量的產品。它對我們的開發速度和資源分配產生了顯著影響。

  • 團隊效率:我們僅有 2-3 名移動工程師,卻實現了 [X 百萬] 次安裝,並保持了 [Y 星級] 評級。每個工程師的這種影響力證明了 Flutter 的效率。
  • 國際化:Flutter 透過 intl 包提供的一流的本地化和國際化支援,以及支援區域設定的小部件,使我們能夠有效地將應用程式本地化為 15 種語言。
  • 資源分配:透過消除對平臺特定團隊的需求,我們將資源重新分配到核心功能開發和人工智慧整合,從而加速了我們的產品演進。
  • 效能最佳化:Flutter 內建的效能分析工具使我們能夠以最少的額外工作保持高效能,這對於我們圖形密集型應用程式至關重要。

您面臨的最重要的效能挑戰是什麼?哪些 Flutter 特定的技術或工具幫助解決了這些挑戰?

我們面臨的最重大挑戰之一是最佳化影像批次編輯功能,其中包括同時應用模板、編輯背景、重新定位和應用陰影。關鍵要求是在每次使用者操作後生成即時預覽。我們利用 Flutter 的能力從伺服器端處理過渡到裝置端處理,並實施了幾項最佳化:自定義渲染管道:使用 PipelineOwner 和 RenderView 開發,用於舞臺外預覽生成。

  • 影像預快取:利用 precacheImage,將預覽生成時間縮短了 30%。
  • 受控的重新渲染:實施 RepaintBoundary,策略性地使用鍵,並利用 DevTools 來最大程度地減少不必要的重新渲染。

這些 Flutter 特定技術,加上裝置端生成,將預覽生成時間縮短了 66%。這種裝置端方法不僅透過近乎即時的預覽增強了使用者體驗,還減少了伺服器負載並改進了離線功能,展示了 Flutter 在實現複雜影像處理任務的複雜本地計算方面的強大功能。


您如何確保跨平臺的使用者體驗一致性,以及哪些 Flutter 功能幫助您實現了類似原生的感覺?

我們從頭開始構建了 UI 元件,Flutter Widgets 使我們能夠輕鬆建立可重用元件。透過借鑑 Android 和 iOS 設計指南中的最佳實踐,我們的元件在兩種環境中都很好地融入。


您的 Flutter 應用的自動化測試和 CI/CD 方法是什麼樣的?它如何支援您的應用在生產環境中的穩定性?

我們有 GitHub Actions,它針對每個拉取請求進行構建,並建立產品團隊用於測試應用程式的 apk 捆綁包。這確保了我們不需要每次都要求開發人員構建並將其分發給團隊的其他成員。沒有浪費時間在構建或等待構建上。每次新提交都會自動構建,GitHub Actions 和 PR 成為單一事實來源。一旦 PR 合併,更多的 GitHub Actions 將其針對生產環境進行構建,並上傳到 App Store 和 Play Store,從而在沒有人為錯誤的情況下進行分發。


您如何處理使用 Flutter 構建的生產應用的即時監控、bug 跟蹤和效能分析?

我們使用 Sentry 的 bug 跟蹤和效能監控工具與 Flutter 配合使用。整合非常出色,能夠收集額外的裝置指標、麵包屑,並且與導航等功能的整合也很容易。因此,我們可以輕鬆跟蹤使用者在崩潰前的旅程,並重現相同的問題。透過清晰的堆疊跟蹤,找出問題的原因通常非常直接。


Flutter 在您團隊的此應用長期可擴充套件性計劃中扮演什麼角色?您對 Flutter 持續支援生產應用有多大的信心?

隨著我們深入構建設計工具,我們對 Flutter 在新版本中暴露底層 API 的方向感到滿意。我們最初選擇 Flutter 時的一個擔憂是,作為一個跨平臺開發解決方案,Flutter 會優先考慮廣度而不是深度,我們會在某個地方碰壁。考慮到這一點,我們非常高興 Flutter 正在透過暴露更多底層 API 來投入更多深度。


對於考慮將 Flutter 用於生產的其他團隊,您認為最大的好處是什麼?您會給他們什麼建議以取得類似的成功?

當我們開始時,有很多觀點認為包括 Flutter 在內的跨平臺開發解決方案效能不佳,最適合僅是表格和資料收集的簡單應用程式。我們反對這種觀點,決定使用 Flutter 建立一個照片編輯應用程式,並且我們沒有遇到任何與原生應用程式開發不會遇到的效能問題。每當我們遇到問題時,它都與 Flutter 無關,我們能夠很好地解決它。對於非 UI 程式碼,無論如何我們都可以很好地利用原生程式碼。選擇 Flutter 是一個很棒的決定。我們很容易在 Flutter 小部件之上構建一個可編輯的互動式畫布。能夠開發如此龐大的程式碼並將其部署到 iOS 和 Android,對於像我們這樣的小公司來說,節省了大量時間。事實上,我們還將 Flutter 程式碼直接部署到我們的伺服器上,用於渲染和匯出影像。它每天生成超過 200 萬張預覽影像。我們確實不得不稍微修改一下才能使其在伺服器端工作,我們希望 Flutter 團隊能儘快提供更好的伺服器端渲染支援。

在當今競爭激烈的市場中,構建一款成功的旅行應用程式不僅需要引人注目的視覺效果;它還需要無縫的使用者體驗、一流的效能以及快速適應的能力。Scapia 作為旅遊行業的新星,認識到這些挑戰,並選擇 Flutter 作為其增長的基礎。


在這次富有洞察力的採訪中,我們聽取了 Scapia 工程主管 Sourabh Gupta 講述他們與 Flutter 的旅程。他分享了一個由 12 名工程師組成的團隊如何利用 Flutter 的多功能性和健壯性來建立一個不僅提供卓越 UI/UX 的應用程式,而且將其範圍擴充套件到移動之外,為其網站和 PDF 生成工作流提供支援。


瞭解 Scapia 如何透過 Shorebird 等創新解決方案解決 OTA 更新的效能挑戰,確保跨平臺的 UI 一致性,並構建強大的 CI/CD 管道以增強穩定性。加入我們,探索驅動 Scapia 選擇 Flutter 的關鍵因素以及他們在此過程中學到的寶貴經驗。


Play StoreApple Store 下載 Scapia。


哪些因素促使您的團隊選擇 Flutter 來開發生產級應用程式,以及它是否符合您的預期?

當 Scapia 於 2022 年成立時,我們確定了使我們的技術區別於競爭對手的關鍵因素,並吸取了我們在 Flipkart 和 Swiggy 的經驗教訓。以下是我們技術棧的關鍵考慮因素:


  • 專注於 UI/UX 卓越:我們旨在提供一款具有出色 UI 和 UX 的應用程式,強調豐富的動畫。該框架需要支援高階動畫功能。
  • 一次編寫,隨處部署:一個使我們能夠一次編寫程式碼並跨多個平臺無縫部署的框架至關重要。
  • 高效能:確保跨平臺的卓越效能對於提供一致的使用者體驗至關重要。
  • 跨平臺 UI 一致性:在所有平臺上保持無縫和統一的 UI 對於提供內聚的應用程式體驗至關重要。

在評估了這些標準之後,我們發現 Flutter 完全符合我們的要求,並選擇它作為我們應用程式的基礎。


現在,距離應用程式釋出兩年了,我們使用 Flutter 的體驗非常出色。我們已經成功地以最少的資源嚮應用程式添加了多個垂直領域,同時在所有平臺上保持了穩定一致的效能。除了移動開發之外,我們還利用 Flutter 進行 PDF 生成和網站工作流,展示了它的多功能性和健壯性。


Flutter 如何幫助您簡化跨平臺開發,以及它對您的開發速度和資源分配產生了什麼影響?

A:Flutter 極大地幫助了我們的團隊,使我們能夠一次編寫程式碼並將其部署到 Android、iOS 和 Web 上。它提高了我們構建跨平臺一致使用者流程的效率,並允許我們同時部署相同的程式碼,確保統一的使用者體驗。此外,Flutter 使單個開發人員能夠端到端地管理功能,從而無需為平臺特定程式碼僱用多名開發人員。


您面臨的最重要的效能挑戰是什麼?哪些 Flutter 特定的技術或工具幫助解決了這些挑戰?

我們使用 Flutter 面臨的主要挑戰之一是處理空中下載 (OTA) 更新。每當我們需要修復崩潰或推出關鍵問題時,我們都必須釋出新的應用程式版本,然後該版本將經歷審查過程。

我們透過整合 Shorebird 解決了這一挑戰,它支援 Flutter 應用程式的 OTA 更新。透過這種整合,我們已經能夠在生產環境中為 Android 和 iOS 推出多個關鍵修復,而無需等待新的應用程式釋出。這使我們與其他支援 OTA 更新的 React Native 等技術一樣敏捷。


您如何確保跨平臺的使用者體驗一致性,以及哪些 Flutter 功能幫助您實現了類似原生的感覺?

確保跨平臺的使用者體驗一致性是移動開發中的一個重大挑戰。Flutter 透過直接編譯為原生程式碼來解決此問題,這減少了效能瓶頸並確保了流暢、響應迅速的使用者體驗。

Flutter 使用自己的渲染引擎 (Skia),繞過了平臺原生元件。這確保了 UI 元素在 Android、iOS、Web 和桌面平臺上的外觀和行為一致。此外,透過使開發人員能夠為多個平臺編寫單個程式碼庫,Flutter 消除了功能和設計上的差異。

我們正在應用程式中大量使用 Rive 動畫,並且沒有遇到任何問題。


您的 Flutter 應用的自動化測試和 CI/CD 方法是什麼樣的?它如何支援您的應用在生產環境中的穩定性?

我們從一開始就投入了 CI/CD 流水線,認識到它提供的關鍵優勢:一致的 SDK 版本、自動版本控制支援、減少人為錯誤和更快的部署。我們將 Xcode Cloud 流水線整合到我們應用程式的構建和部署過程中。我們的構建現在根據預定義的觸發器(例如拉取請求合併和分支更改)在雲中自動生成。這種簡化的工作流為我們節省了之前所需的 30 多分鐘的手動工作,並透過傳送到我們專用 Slack 頻道的通知提高了我們及時瞭解構建狀態的能力。附件是解釋我們構建過程的螢幕截圖。



Community Guidelines

您如何處理使用 Flutter 構建的生產應用的即時監控、bug 跟蹤和效能分析?

我們使用 Firebase 監控應用程式崩潰和效能問題。Firebase Flutter SDK 易於整合,可無縫跟蹤應用程式執行狀況。為了測量網路延遲和應用程式啟動時間,我們廣泛利用 Firebase Performance 的自定義跟蹤流程。這對於減少我們 API 呼叫的感知延遲和增強整體使用者體驗至關重要。


Flutter 在您團隊的此應用長期可擴充套件性計劃中扮演什麼角色?您對 Flutter 持續支援生產應用有多大的信心?

我們選擇 Flutter 是因為許多擁有數百萬下載量的高知名度應用程式(例如 Google Pay)都在廣泛使用它,這讓我們確信可擴充套件性不會成為問題。最初,我們為 Android 和 iOS 採用了 Flutter,隨著時間的推移,我們將其用途擴充套件到 PDF 生成、電子郵件處理和網站流程。它在所有這些領域都無縫執行。

透過使用 Flutter,我們不再需要針對不同平臺的多名專家;同一個團隊可以處理所有 UI 流程。我們在生產環境中使用 Flutter 已有兩年時間,沒有遇到任何穩定性問題。

我們看到了 Flutter 團隊的持續改進,例如 WebAssembly 支援以提高 Web 效能,以及 Impeller 渲染引擎,它在 iOS 裝置上提供更流暢的動畫。


對於考慮將 Flutter 用於生產的其他團隊,您認為最大的好處是什麼?您會給他們什麼建議以取得類似的成功?

“當你構建新事物時,每一個技術決策都很重要。Flutter 對我們來說不僅僅是框架的選擇——它關乎如何用更少的資源做更多的事情。兩年過去了,看到我們釋出功能的速度和應用程式執行的流暢性,我們知道我們做出了正確的決定。”~ Sourabh Gupta

在管理企業財務方面,Tide 已成為簡單高效的代名詞。但在這使用者友好的體驗背後,是一個由 Flutter 驅動的強大技術引擎。


在這段獨家影片採訪中,我們深入探討了 Tide 的 Flutter 之旅,與兩位主導其移動轉型的關鍵人物:高階員工工程師 Anna Leushchenko工程經理 Oleksandr Leushchenko


Tide 擁有一支由 68 名 Flutter 工程師組成的團隊,他們著手進行一項雄心勃勃的專案,將他們的原生應用程式遷移到 Flutter。Anna 在構建應用程式基礎和架構方面發揮了關鍵作用,Oleksandr 則負責安全性、測試和使用者體驗,他們分享了在整個過程中遇到的挑戰、成功和經驗教訓。


瞭解 Tide 如何利用 Flutter 簡化開發、增強應用程式效能並保持跨平臺一致的體驗。準備好被他們的故事所啟發,並瞭解 Flutter 如何賦能各種規模的企業,讓他們在創新浪潮中乘風破浪。


Play StoreApple Store 下載此應用。


在構建需要處理海量資料集且效能絲毫不打折扣的企業級應用程式時,TigerEye 絕不含糊。他們需要一個框架,不僅能夠提供跨平臺一致的使用者體驗,而且還能提供馴服數百萬個數據點所需的低階控制和效率。他們的選擇?Flutter。


在與 TigerEye 開發團隊關鍵人物 Ralph Gootee 的坦誠對話中,我們超越炒作,探討了 Flutter 之所以成為滿足其複雜需求的理想解決方案的具體原因。Ralph 借鑑了他使用各種技術的豐富經驗,揭示了 Flutter 獨特的渲染、狀態管理和跨平臺一致性方法如何與 TigerEye 的願景完美契合。


TigerEye 擁有一個由 12 名開發人員組成的團隊,他們開始構建一個真正的跨平臺原生應用程式,能夠處理企業客戶的海量資料需求。加入我們,深入探討其 Flutter 實現的技術細節,包括:


TigerEye 如何在生產中使用 #Flutter

TigerEye,我們需要一個跨平臺開發框架,但又不依賴於網路技術。我們優先考慮一種低階、型別安全的應用程式開發技術,以避免移植網路工具的陷阱。在探索了 React Native 和其他選項後,我們發現 Flutter 是理想的解決方案。


受影片遊戲開發工具和索尼汽車介面白皮書的啟發,我們認識到 Flutter 直接寫入幀緩衝器的能力是一個遊戲規則改變者。這種方法提供了卓越的效能和圖形潛力,避免了作業系統強加的操作複雜性。結合其單向資料流和狀態管理,Flutter 成為構建 TigerEye 複雜企業級應用程式的完美基礎。


Flutter 實現了真正的跨平臺功能,使我們能夠維護單一程式碼庫,而不會犧牲速度或質量。與 QT、React Native 或 Microsoft C# Mono 等舊系統相比,它速度快且權衡取捨少得多。其架構提供了乾淨、可維護、可測試的程式碼,可在不同平臺上始終如一地執行。


與 Spotify、Zoom 甚至《暗黑破壞神》等現代影片遊戲所使用的設計系統一樣,TigerEye 的介面在不同裝置上實現了統一性和精美度,而不會犧牲功能。Flutter 強大的小部件系統確保我們的企業使用者無論使用哪個平臺,都能獲得高質量的結果。


效能和跨平臺開發

TigerEye 的應用程式以每秒 60 幀的速度執行,同時處理數百萬條資料記錄,這部分得益於 DuckDB.Dart。這個針對 DuckDB 資料庫的 Dart 外掛直接在應用程式內提供高效能資料處理。Flutter 高效的小部件系統確保只有可見資料才被載入到記憶體中,從而優化了速度和資源使用。DuckDB.Dart 和 Flutter 的無縫整合共同為所有平臺提供企業級效能和可擴充套件性。


因為 Flutter 直接與幀緩衝區協同工作,所以它簡化了效能最佳化。專為高資料量構建的自定義小部件避免了瓶頸,這是 TigerEye 產品的一項關鍵功能,該產品每天處理數百萬個數據點。Dart 的 FFI(外部函式介面)在此也發揮了關鍵作用,使我們能夠將 DuckDB 高效整合到我們的系統中,以進行低階、高效能的資料處理。


跨平臺一致的使用者體驗

TigerEye 使用自己的設計系統,以確保跨平臺的一致體驗。Flutter 使我們能夠為資料網格和圖表等小部件保持一致的外觀和感覺,無論裝置如何。


Flutter 能夠根據裝置功能(無論是像 iPad 這樣的觸控式螢幕裝置還是帶有滑鼠的桌面裝置)調整介面,這一點至關重要。我們不依賴 Cupertino 或 Material Design 等預設樣式指南,而是自定義 Flutter 的小部件以符合 TigerEye 獨特的設計要求。


Flutter 的靈活性還允許我們利用特定裝置的功能,同時保持統一的體驗。例如,在帶有觸控式螢幕的 Windows 裝置上,我們的應用程式提供了最佳化的觸控介面,而在 macOS 上,我們提供了針對桌面使用者量身定製的精美體驗。這種適應性確保使用者始終擁有類似原生的體驗。


自動化測試和 CI/CD

Flutter 命令列友好的構建過程對 CI/CD 來說是顛覆性的。與 Xcode 等 GUI 繁重的工具不同,Flutter 允許我們使用統一的、基於程式碼的方法。這消除了手動步驟或平臺特定配置的需要,簡化了我們的釋出,並實現了每週數百次部署。


Flutter 在測試方面也表現出色,它對小部件、檢視和整合測試提供了強大的支援。這使我們能夠隔離和測試特定功能,例如按鈕或資料檢視,而無需載入整個作業系統,從而節省了時間和資源。Flutter 測試的無頭特性使其特別快速且對開發人員友好。


可擴充套件性和長期計劃

TigerEye 專為企業級應用程式而構建,Flutter 已證明其能夠有效處理大量資料。在 Google 的支援下,Flutter 提供了我們長期增長所需的可靠性和可擴充套件性。作為一家 Google 公司,我們將 Flutter 與 GCP 等其他 Google 技術一起使用,建立了一個支援我們可擴充套件性目標的無縫生態系統。


Dart 是驅動 Flutter 的語言,對我們的開發至關重要。它透過 Flutter 驅動我們的前端應用程式和我們的後端資料平臺。這種共享的基礎使我們不僅可以重用程式碼,還可以重用基本核心元件。例如,我們用 Dart 編寫了一個模擬器來模擬業務未來並執行蒙特卡羅分析。這使我們能夠在後端執行數千次模擬,同時使用相同的邏輯在前端執行單個模擬以進行視覺化。這種雙重用途能力提高了開發效率並確保了我們平臺的一致性。


我們的應用程式專為 IPO 級別的公司設計,處理海量資料集至關重要。Flutter 的架構,結合 Dart 和 DuckDB.Dart,確保我們能夠滿足這些需求,而不會影響效能。


給考慮 Flutter 的團隊的建議

  1. 原生跨平臺開發:Flutter 在不犧牲效能的情況下提供原生跨平臺解決方案的能力是無與倫比的。
  2. 高效程式碼:與最初為單一平臺設計的框架相比,Flutter 的架構產生更乾淨、更易於維護的程式碼。
  3. 除錯和分析工具:Flutter 的工具是同類最佳的,可以輕鬆找出並解決效能問題。

對於考慮 Flutter 的團隊,我們的建議很簡單:優先學習 Dart。它的多功能性允許在前端和後端系統之間無縫整合,從而為您的團隊在效能和可伸縮性方面帶來顯著優勢。Flutter 是一個適用於嚴肅企業級應用程式的現代、可靠的解決方案。

在快節奏的金融科技世界中,敏捷性和創新是關鍵。MAKE by KBank 作為泰國領先的數字銀行平臺,認識到需要一個能夠提供高質量使用者體驗,同時實現快速開發和可擴充套件性的框架。他們的選擇?Flutter。


在這次富有洞察力的採訪中,我們與 MAKE by KBank 的高階軟體工程師兼技術主管 Amorn Apichattanakul 進行了交流,探討了 Flutter 如何賦能他們的團隊構建一個強大且功能豐富的應用程式,以滿足當今精通技術的使用者的需求。


MAKE by KBank 的團隊由 Flutter 工程師、後端開發人員、QA 自動化專家、資料分析師、UX/UI 設計師和產品負責人組成,他們踏上了建立無縫且安全的數字銀行體驗的旅程。Amorn 分享了他們決定採用 Flutter 的寶貴見解,強調了它對開發速度、資源分配和整體應用程式效能的影響。


Play StoreApple Store 下載 MAKE by KBank:預算應用程式。


哪些因素促使您的團隊選擇 Flutter 來開發生產級應用程式,以及它是否符合您的預期?

我們的主要目標是找到一個解決方案,使我們能夠快速交付高質量產品,而無需維護獨立的 iOS 和 Android 團隊。作為一家初創公司,敏捷性至關重要,因此採用 Flutter 這樣的跨平臺框架是自然而然的選擇。

效能是我們決策的另一個關鍵因素。雖然開發速度很重要,但我們不能在使用者體驗上妥協。Flutter 滿足了這兩個需求,透過單一程式碼庫實現快速迭代,同時提供流暢響應的效能,即使對於要求很高的功能也是如此。起初,我們擔心 Flutter 可能無法達到滲透測試團隊所需的安全標準。我們認為其主要關注點是開發者體驗,安全性可能會排在最後。然而,我們感到驚喜。Flutter 提供了實現強大安全措施所需的工具和靈活性,同時仍然提供了出色的開發者體驗。它與原生 API 的無縫整合使我們能夠有效地滿足所有安全要求。這讓我們對 Flutter 作為生產就緒框架充滿信心。


Flutter 如何幫助您簡化跨平臺開發,以及它對您的開發速度和資源分配產生了什麼影響?

作為一名 iOS 開發人員,我在原生應用開發過程中面臨的最大挑戰之一是管理兩個獨立的 codebase。這經常導致 iOS 和 Android 實現之間發生衝突,尤其是在 API 呼叫方面。當生產問題出現時,我們必須讓多個角色(iOS、Android 和產品負責人)參與進來,以確定哪個平臺具有正確的實現,從而減慢了解決速度。

Flutter 的單一程式碼庫消除了這一痛點,確保了跨平臺的一致實現,降低了此類錯誤的風險。這不僅加快了交付速度,還釋放了用於修復差異和實現問題的資源。我們將這些資源重新投入到更徹底的測試中,從而提高了應用程式的質量和穩定性。透過專注於測試而不是重複開發,我們在不犧牲可靠性的情況下實現了更快的交付。


您面臨的最重要的效能挑戰是什麼?哪些 Flutter 特定的技術或工具幫助解決了這些挑戰?

我們面臨的最大效能挑戰之一是 Dart 在處理高計算任務(例如影像處理、壓縮和即時機器學習)方面的侷限性。我們最初嘗試透過使用 Dart Isolates 來最佳化效能以減少 UI 卡頓,但發現 Dart 在這些領域的效能落後於原生解決方案。

幸運的是,Flutter 的方法通道提供了一種無縫的方式,可以將繁重的計算解除安裝到原生程式碼。透過利用此功能,我們將高計算任務傳遞給原生實現,同時將應用程式的其餘部分保留在 Flutter 中。這種方法使我們能夠實現與原生應用程式幾乎持平的效能。雖然在 Flutter 和原生層之間傳遞資料會產生少量開銷,但它微不足道,對我們來說並不是一個問題。


您如何確保跨平臺的使用者體驗一致性,以及哪些 Flutter 功能幫助您實現了類似原生的感覺?

Flutter 提供對 Material Design 和 Cupertino Design 的內建支援,使開發人員能夠輕鬆建立特定於平臺的主題。您可以將小部件與特定於平臺的主題包裝起來,以確保跨平臺的一致性。然而,我們的主要關注點不是模仿原生主題,因為大多數現代應用程式都旨在實現獨特且品牌化的使用者介面。

為了實現這一點,我們在 Material Design 原則的基礎上構建了我們的自定義 UI,這為一致性和可用性提供了堅實的基礎。Flutter 強大的動畫功能使我們能夠進一步增強使用者體驗,新增與我們的設計願景相符的流暢過渡和動態視覺效果。這種方法確保了精美的、類似原生的感覺,同時保持了我們應用程式的獨特身份。


您的 Flutter 應用的自動化測試和 CI/CD 方法是什麼樣的?它如何支援您的應用在生產環境中的穩定性?

與原生解決方案相比,Flutter 的小部件測試框架是一個遊戲規則改變者。它允許我們有效地測試 UI 元件,類似於在 iOS 中測試 UIView 或 UIViewController,但具有更強大的工具。透過結合單元測試和小部件測試,我們可以在不影響速度或可靠性的情況下涵蓋業務邏輯、UI 邏輯和整合場景。

然而,Flutter 的 UI 測試不如 Swift/Kotlin 等原生解決方案成熟,因為它缺少用於建立 UI 測試的錄製模式等功能。此外,我們無法直接測試原生 UI 元件,但“Patrol”等工具幫助彌合了這一差距。雖然 Flutter 中的 UI 測試有限,但小部件測試已被證明更快、更可靠,使其成為我們的首選方法。

對於 CI/CD,Flutter 與現有的 iOS 和 Android 管道無縫整合,允許我們使用 Fastlane 等熟悉的工具進行自動化。這確保了流暢高效的部署過程,支援我們應用在生產環境中的穩定性。


您如何處理使用 Flutter 構建的生產應用的即時監控、bug 跟蹤和效能分析?

對於即時監控、錯誤跟蹤和效能分析,我們高度依賴 Firebase,它是一套出色的移動應用程式開發工具。Firebase 與 Flutter 無縫整合,只需最少的設定工作。

此外,大多數主要的監控 SDK 現在都完全支援 Flutter,因此實施這些工具非常簡單。由於這些都是我們已經在原生應用程式中使用的成熟解決方案,因此過渡到 Flutter 在這方面沒有帶來任何挑戰。這使我們能夠保持與原生開發相同的高標準進行監控和分析。


Flutter 在您團隊的此應用長期可擴充套件性計劃中扮演什麼角色?您對 Flutter 持續支援生產應用有多大的信心?

Flutter 透過在跨平臺提供 UI 和實現邏輯的一致性,在我們的長期可擴充套件性計劃中發揮著至關重要的作用。小部件測試和熱過載等功能顯著提高了我們的開發速度和效率,消除了對嵌入框架(例如 XCFrameworks 或 AAR 檔案)等變通方法的需要,這些方法在原生開發中很常見。

我們對 Flutter 的未來充滿信心,因為它的社群在世界各地開發者的積極貢獻下不斷壯大。即使萬一 Google 退出,Flutter 的開源性質和全球普及度也確保了它的長壽和發展。我們認為 Flutter 的可行性沒有威脅,並將其視為我們應用程式可擴充套件性的基石。


對於考慮將 Flutter 用於生產的其他團隊,您認為最大的好處是什麼?您會給他們什麼建議以取得類似的成功?

我的許多同事仍然依賴原生開發,因為他們的職業生涯植根於此,即使他們好奇嘗試 Flutter。對於考慮 Flutter 的團隊來說,它最大的好處之一是能夠節省非核心功能的時間和精力,尤其是那些需要複雜動畫的功能,透過使用 Flutter 的 Add-to-App 方法。

在我們的案例中,我們正在構建一個金融應用程式,對安全性、原生整合和即時機器學習有很高的要求。我們已經成功地使用 Flutter 實現了這些,沒有付出過多的努力,使用者也喜歡這個結果。

關鍵問題是:您真的需要應用程式的每個部分都具有原生級別的效能嗎?在軟體開發中,關鍵在於為正確的工作使用正確的工具。Flutter 和原生都有各自的優勢,成功的關鍵在於在 Flutter 擅長的領域(例如快速開發和 UI 靈活性)利用其優勢,並在需要時整合原生解決方案。

為您的 Flutter 應用建立主螢幕和鎖屏小部件

在本次研討會中,我們將逐步介紹在 iOS 和 Android 上為您的 Flutter 應用新增主螢幕小部件和鎖屏小部件所需的步驟。


準備工作

本次研討會將深入探討原生 Android 和原生 iOS 開發。除了安裝 Flutter SDK 和開發環境之外,您還需要某些軟體才能完成每個部分。要跟隨 Android 部分,您只需 Android Studio。要跟隨 iOS 部分,您需要一臺安裝了 Xcode 的 macOS 電腦和 Apple 開發者帳戶。更多資訊請參閱此 Github 儲存庫的 README

動手實踐多因素認證和 Firestore 計數查詢

為您的 Flutter 應用獲取最新的 Firebase 功能。我們將從一個基本應用開始,然後新增多因素手機身份驗證以確保更安全的登入。然後,我們將使用 Firestore 中的新 COUNT() 運算子,以極小的成本和複雜性將計數包含在應用中。


準備工作

為了參與本次研討會,您需要設定好 Flutter 和 Firebase 開發環境。您可以按照 瞭解 Firebase for Flutter 程式設計實驗室中的設定說明進行操作。完成程式設計實驗室的第一到第四步以設定環境非常重要。如果您沒有 Firebase 經驗,建議您在研討會之前完成整個程式設計實驗室。

如何構建 Basil Material 3 研究

瞭解如何使用高階主題功能和 Material hct 顏色系統進行 Basil Material 3 研究。Basil 應用還展示瞭如何針對環境顯示和智慧顯示進行構建。


準備工作

本次研討會包含設計過程的步驟,將幫助開發人員學習如何將設計轉化為程式碼。為了跟隨研討會的設計過程部分,您應該安裝 Figma,或計劃使用 Figma 的 Web 客戶端。(如果您計劃使用 Web 客戶端,您應該事先測試 Figma,因為如果網際網路連線不夠快,它不如桌面客戶端可靠。)除了 Figma,本次研討會只使用標準的 Flutter 開發環境。

社群

社群準則

Community Guidelines

Google 面對面和線上活動的社群準則和反騷擾政策

Google 致力於為每個人提供一個沒有騷擾、包容的活動體驗,無論其性別認同和表達、性取向、殘疾、神經多樣性、外貌、體型、種族、國籍、民族、年齡、宗教或其他受保護類別。我們不容忍任何形式對活動參與者的騷擾。Google 認真對待違反我們政策的行為,並將採取適當的應對措施。


所有 Google 活動的參與者,包括現場和線上參會者、活動工作人員、演講者和 Google 員工,都必須遵守以下政策

相互尊重。

尊重每一個人。參與活動時請認識到每個人都應該在這裡——我們每個人都有權享受我們的體驗,而無需擔心騷擾、歧視或蔑視,無論是公然的還是透過微侵犯。所有形式的交流都不應貶低他人。請思考您所說的話,以及如果這些話是對您說或關於您的話,您會作何感受。

如果您看到或聽到任何不當行為,請立即提出。

我們不容忍騷擾行為,當您或他人受到不尊重時,您有權禮貌地介入。讓您感到不適的人可能沒有意識到他們正在做什麼,我們鼓勵您禮貌地提醒他們注意他們的行為。

  • 跟蹤/尾隨
  • 蓄意恐嚇
  • 騷擾性攝影或錄影
  • 持續干擾演講或其他活動
  • 冒犯性言語
  • 強化社會支配結構的言語
  • 公共場所的性暗示影像和語言
  • 不恰當的身體接觸
  • 不受歡迎的性或身體關注
  • 身體或網路威脅

相關,但不限於

  • 神經多樣性
  • 種族
  • 膚色
  • 原籍國
  • 性別認同
  • 性別表達
  • 性取向
  • 年齡
  • 體型
  • 殘疾
  • 外貌
  • 宗教
  • 懷孕
  • 兵役狀況
  • 社會人口特徵

被要求停止任何騷擾行為的參與者應立即遵守。我們的零容忍政策意味著我們將調查和審查所有違反我們的活動社群準則和反騷擾政策的指控,並做出適當的回應。如需舉報任何讓您或他人感到不適的行為,請傳送電子郵件至 flutter-engage-community@google.com


本政策適用於講座、論壇、工作坊、程式設計實驗室、社交媒體、所有與會者、合作伙伴、贊助商、志願者、工作人員等。您明白我們的意思。Google 保留隨時自行決定拒絕任何人在任何 Google 主辦的活動(包括未來的 Google 活動)入場或將其移出的權利。這包括但不限於行為不檢或不遵守本政策及其中條款和條件的與會者。如果參與者從事騷擾或令人不適的行為,會議組織者可採取其認為適當的任何行動,包括警告或將違規者逐出會議且不予退款,或阻止違規者帳戶參與線上活動。