Flutter 1.0 正式版: Google 的跨平台 UI 工具包


今天我們非常高興的宣布,Flutter 的 1.0 版本正式發布!Flutter 是 Google 為您打造的 UI 工具包,幫助您通過一套代碼同時在 iOS 和 Android 上構建媲美原生體驗的精美應用!

如今,移動開發者們在同時兼容 iOS 和 Android 時有兩種選擇:走原生開發路線,把界面和邏輯在不同平台分別實現;抑或用同一套代碼兼容多個平台,但這往往意味着運行速度和產品保真度的損失。我們堅信,Flutter 為您提供了一套兩全其美的解決方案——既能用原生 ARM 代碼直接調用的方式來加速圖形渲染和 UI 繪制,又能同時運行在兩大主流移動操作系統上。

 

「正式」向您介紹 Flutter

Flutter 並不是要替代原生應用開發模式,您可以用 Flutter 開始一個全新的應用,也可以把 Flutter 理解為應用內置的一個引擎,把這個引擎引入到現有的工程里。

讓我來從以下四個特點為您介紹 Flutter: 

  1. Flutter 可以幫助您構建界面精美的應用。我們希望設計師們都能充分發揮自己的想象,盡情施展精美絕倫的創意,而不受框架局限性的干擾。通過 Flutter,您可以在屏幕上有像素級的掌控。Flutter 強大的圖像組合能力讓您近乎可以不受限制的堆疊任何圖形、視頻、文本和控件。Flutter 內置了一系列的 widgets (在 Flutter 里,幾乎所有內容都是 widget),這些 widgets 可以幫助您在 iOS 和 Android 上實現極致的視覺體驗。Flutter 集成並有最大程度的實現了 Material Design —— 這是 Google 為數字體驗所創作的開放的設計系統。

  2. Flutter 的另一個特點的速度快。它基於 Skia 2D 硬件加速圖形引擎,該引擎也同樣用在了 Chrome 和 Android 平台。媲美原生應用的速度,這是我們在構建 Flutter 時的初心。Flutter 的代碼基於 Dart 平台,它可以被編譯成 iOS 和 Android 平台上 32 位和 64 位的 ARM 代碼。

  3. Flutter 非常高效。Flutter 引入了 Stateful Hot Reload(保持應用狀態的熱重載),這個革命性的新特性可以讓移動開發者和設計師們實時迭代應用程序。通過 Stateful Hot Reload,無需重新啟動應用,你就可以在程序運行的時候直接看到代碼修改之后的效果,Stateful Hot Reload 改變了開發者們編寫應用的方式。在我們的用戶反饋中,開發者們表示該特性使得開發效率提升了三倍。

  4. 最后,Flutter 是開放的。Flutter 是一個基於 BSD-style 許可的開源項目,全球數百位開發者在為其貢獻代碼。Flutter 的插件生態系統平台也充滿活力。有數千款插件已經發布,避免了重復造輪子。由於 Flutter 應用程序使用標准的 Android 和 iOS 的編譯打包工具 (build tools),因此它的開放還體現在您可以使用原生開發資源。比如,您同樣可以在 Android 上使用 Kotlin 或者 Java,在 iOS 上使用 Swift 或者 Objective-C 來寫邏輯或者界面。

結合以上這些,再加上您順手的開發工具,比如 Visual Studio Code、Android Studio、IntelliJ 或其他您青睞開發者編輯器,您就可以開始使用 Flutter 體驗一套代碼同時在 iOS 和 Android上實現原生應用效果的樂趣了。

 

Flutter 勢頭正旺

在 10 個月前的世界移動大會 (MWC) 上,我們發布了 Flutter 的第一個 Beta 版本,在正式版本尚未推出之前,已經有成百上千的基於 Flutter 開發的應用在 Apple Store 和 Google Play 上架,很顯然,廣大的開發者們也已經准備好迎接這種全新的 UI 開發方式了。

在 Google 內部,Flutter 已經被廣泛用於多個產品,比如 Google Ads 已經將其產品的 iOS 版本和 Android 版本轉向使用 Flutter。在正式版本之前,全世界已經有多個公司開始使用 Flutter 來開發應用,包括 Abbey Road Studios、阿里巴巴、Capital One、Groupon、Hamilton、京東、Philips Hue、Reflectly 以及騰訊等。

Capital One 團隊的高級工程總監 Michael Jones 對於 Flutter 提到了如下的使用心得: 

“我們對於 Flutter 所帶來的高效的跨平台開發體驗感到十分興奮。我們的工程師對其中的快速開發和 hot reload 給予了極高的評價。而且在過去的一年里,我們也看到了整體平台巨大的變化,尤其是和原生系統深度集成的效果。”

“Flutter 使 Capital One 研發團隊擺脫了 iOS 優先還是 Android 優先的固定思維,而是真正的移動端優先的開發模式。非常高興能看到 Flutter 1.0 的發布,並且也對 Flutter 如此快速的發展和開發者社區所迸發的熱情所感動。”

*注: Capital One 是美國十大銀行之一,《財富》世界 500 強企業。


在今天的 Flutter Live 活動中,知名的支付服務商 Square 正式公布了兩個全新的 Flutter SDK。它們可以更加簡化基於 Flutter 的支付操作和服務,無論是使用 Square 支付識讀器直接支付還是使用手機應用進行支付。Square 演示了一款基於它們的支付 SDK 所開發的應用。該應用來自 Collins Family Orchards,這是一家在太平洋西北部種植和銷售水果的家族農場。

  • Flutter SDK: 

    https://squareup.com/flutter

Collins Family Orchards 應用的開發者 Dean Papastrat 認為: 

“應用在生產環境下的動畫流暢度和頁面的切換速度真的讓我大開眼界。作為一個 Web 開發者,上手使用 Flutter 非常簡單。真的沒想到能夠在短短的一周時間就完成了一個能夠實現完整功能的應用。”

同樣是在今天的 Flutter Live 活動上,2Dimensions 宣布了一款全新的工具 Flare,該工具可以將矢量動畫直接嵌入到 Flutter 應用中,並且用代碼來控制。Flare 打破了傳統的模式,無需再單獨開發應用和動畫,然后再轉換成設備資源和代碼。

  • Flare: 

    https://medium.com/2dimensions/flare-launch-d524067d34d8

 

使用 Flare 實現的動畫可以作為 widget 嵌入到已有的 Flutter 應用中。使其能夠融入整體的界面中,和文本、圖形渲染層以及其它 UI widget 疊加在一起。通過這種集成方式,可以將動畫從其他平台的 “黑盒” 局限性解放出來,持續促進開發者與設計師協作完成應用。Flutter 和 Flare 的緊密整合激發了設計師和動畫師的熱情來構建設計精美的移動應用。

為您介紹另外一位 Flutter 的合作伙伴 Nevercode,這是一家快速成長的,為移動應用提供持續集成和推送工具的提供商。今天,他們正式發布了 Codemagic。該工具針對 Flutter 設計,簡化了 Android 和 iOS 平台上的應用編譯和打包的處理過程。現在已經發布 beta 版本。使用 Codemagic,開發者只需要在 GitHub 里選擇一個含有 Flutter 項目的倉庫,僅需簡單的幾個點擊即可生成一整套處理流程,包括執行測試,生成應用軟件包並上傳至 Apple Store 和 Google Play。

  • Codemagic:

    https://codemagic.io/

這里我們整理了一個短視頻,為大家展示開發者們基於 Flutter 的 Beta 版本所實現的應用,長按下方☟二維碼☟可直接觀看:

1.0 版本中引入的新特性

首個 Beta 版發布以來,我們持續為 Flutter 添磚加瓦,精雕細琢。尤其是今年 PR2 版本的發布,我們為 iOS 風格提供了全新的 widgets,接入了近 20 種 Firebase 服務,以及不斷優化性能、壓縮由 Flutter 打包的應用大小。此外,我們也悉心聽取 Flutter 社區反饋,解決了大量的問題。

此時,Flutter 正式開始使用 Dart 平台新的 2.1 版本,這是對 Dart 2 的一次更新。它不僅生成更小的代碼,還能夠提供更快的類型檢查以及更有用的類型錯誤提示信息。Dart 2.1 也帶來了新的語言特性,讓開發構建過程事半功倍。這是來自開發者們的好評聲,他們在切換到新的引擎后感受到了顯著的速度提升: 

1.0 正式版的主要目的是修復 Bug 和提高穩定性,但我們也非常高興地宣布:將有兩個新功能隨 1.0 正式版的預覽模式提供給廣大開發者。它們將會於 2019 年二月的季度更新中正式推出,兩個特性分別是:

引入 Flutter 到現有工程 (Add to App)

起初在構思 Flutter 的時候,我們主要關注於從零開始構建應用的場景。但事實上受制於很多因素,並不是所有開發者都能從零構建。顯然,他們更需要能夠在現有的應用中用 Flutter 添加新的功能,或者分步驟、分階段將現有的應用程序遷移到 Flutter。

Flutter 的架構非常適合於這樣的場景,畢竟每個 Flutter 應用都包含了一個用於托管 Flutter 的 Android 或 iOS 容器。但精益求精方能上一層樓,我們在不斷努力改善漸進式接入 Flutter 的體驗,包括更新模板、優化工具、完善指南等等。現在,將素材在 Flutter 與宿主代碼之間共享變得非常簡單了。另一方面,Flutter 的工具現在能讓您輕松在不使用調試器啟動應用的情況下介入和監測現有的 Flutter 進程。

我們會持續不斷地改善這一體驗。雖然已經有不少客戶已經成功實踐了我們針對“應用引入”提供的指南,但絕不會就此止步,我們會一如既往增加更多優秀的案例,並為更加復雜的場景進行延伸。同時,您可以在 Wiki 頁面查看關於將 Flutter 引入現有應用的文章,也可以在這個GitHub 的項目看板上關注我們的進展。

  • 關於將 Flutter 引入現有應用的文章:

    https://github.com/flutter/flutter/wiki/Add-Flutter-to-existing-apps

  • GitHub 的項目看板: 

    https://github.com/flutter/flutter/projects/28

平台級視圖 (Platform Views)

上面提到的 Add to App 功能非常適合於逐漸引入 Flutter 到現有應用中,但有時候我們反倒需要將 Android 或 iPhone 平台的控件嵌入到 Flutter 應用當中。

我們引入了 AndroidView 和 UiKitView 這兩個平台級視圖的 widget 到 Flutter,您可以將它們分別嵌入到指定的平台中。我們已經在 Android 平台上預覽這一功能數個月了,現在是時候將這一特性推廣到 iOS 平台了。此外,像 Google Maps 和 WebView 這樣的插件已經可以享受到這一特性帶來的種種便利了。

  • Google Maps: 

    https://github.com/flutter/plugins/tree/master/packages/google_maps_flutter

  • WebView:

    https://github.com/flutter/plugins/tree/master/packages/webview_flutter

與其他組件一樣,平台級視圖 widget 也屬於 UI 組合模型的一部分。這意味着您可以將它與其他的 Flutter 組件結合使用。舉個例子,上面的截圖中,右下角的浮動按鈕是一個 50% 透明度的 Flutter widget。這也充分展示了 Flutter 這一獨特架構的優勢。

當前這一功能已經開放給開發者們嘗鮮了,而我們仍需要不斷提升性能和改善設備兼容性。所以我們建議您在構建依賴 Platform Views 的應用時要謹慎小心。我們會堅持完善這一特性,並且期待能夠在下一次季度更新的時候將這一成果正式發布給所有用戶。

 

不止步於移動平台

就目前而言,Flutter 的首要目標平台是 iOS 和 Android,但我們也在不斷探索將 Flutter 拓展到手機端以外的更多平台上。事實上,Flutter 的設計理念就是希望它可以作為一個靈活且便攜的 UI 工具包,以適應各種需要繪制屏幕內容的平台。

一些進展已經公布,Flutter Desktop Embedding 就是其中的一個,這是一個使 Flutter 運行於 macOS、Linux 和 Windows 等桌面操作系統的項目。前不久,我們嘗試在樹莓派平台運行了 Flutter 應用,以非正式和探索的形式向用戶展示 Flutter 是有可能運行在一些沒有完整桌面環境的小型設備中的。

  • Flutter Desktop Embedding: 

    https://github.com/google/flutter-desktop-embedding

同時在本周,我們在內部預覽了一個還處於實驗室開發階段實驗性項目,未來它將極大拓展 Flutter 的運行平台。

Hummingbird 是一個基於 Web 實現的 Flutter 運行時環境。它利用了 Dart 語言能被編譯成 JavaScript 的特性。這個項目讓 Flutter 應用程序能夠無需改動地運行在標准 Web 平台。

我們在 Medium 博客上發布了一篇關於 Hummingbird 的技術實現文章,更多的內容會在 2019 年的 I/O 大會分享給大家。

  • Medium 博客: 

    https://medium.com/flutter-io/hummingbird-building-flutter-for-the-web-e687c2a023a8

當然,移動平台一直都會是我們的首要目標。接下來的幾個月,我們會不斷公布 Flutter 在這些核心平台上取得的成果。

 

總結一下

伴隨着 Flutter 1.0 正式發布,我們會在當前的 beta、dev 和 master 通道之外新增一個叫 stable 的穩定版通道。它的更新不如其他通道那么頻繁,預計將以季度更新的形式將每一階段的穩定更新收納進去。

請前往 https://flutter.io 下載 Flutter 1.0 版本。我們的網站還提供了豐富的文檔幫您從其他的框架中遷移過來,也提供了 codelabs 幫助您更好理解開發 Flutter 應用的過程。另外我們的 cookbook 收錄了常見案例的指南及大量的技術性視頻也一定能幫助您認識與了解 Flutter。

我們深知,那些從一開始就伴隨我們踏上征程的開發者們是如此令人敬佩。你們向我們提交了大量的反饋建議,幫助找到了諸多問題,產出了大量內容,更和我們一起讓 Flutter 項目越來越好。Flutter 社區是我們最寶貴的財富,在這里,我們認識了很多來自不同地區和不同開發生態的積極熱情、樂於奉獻的你們。你們因為愛而為這個開源項目無私的奉獻着,我們真誠地感謝你們!

推廣:一個好消息

同學,你造嗎?阿里雲和騰訊雲已白菜價,雲服務器低至不到300元/年。這里有一份雲計算優惠活動列表,來不及解釋了,趕緊上車!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM