譯者:陳峻
隨著跨平台開發在軟體交付市場上的迅速流行,全球頂尖的移動應用開發公司也聚焦到了該領域。近年來,各種簡化了跨平台開發的工具也如雨後春筍般層出不窮。其中,最知名的工具之一當屬 flutter。它不但可以讓您通過簡單的數行代碼,快速地開發出適用於 android 和 ios 平台的原生應用程式,而且可以減少專業開發人員的工作量與用時,以便加快交付可擴展的移動應用。

1. 什麼是 flutter?
由 google 創建的 flutter,是一種被用作開發原生 android 和 ios 應用的開源技術。其 flutter sdk 允許開發者在較短的時間內,通過協同使用各種工具、小部件、以及綜合框架,來創建和部署直觀的移動應用。目前,google app store 中的 flutter 應用已超過 50,000 個,其中不乏 ebay 和 alibaba 等大廠應用。google 甚至將 flutter 工具包放到了 google home hub ui、及其各種 google assistant 模塊中,以便大型組織利用 flutter 來開發出用戶友好的 web 和移動應用。
2. flutter 概覽
據統計,目前有大約三分之一的移動開發人員正在使用 flutter 作為跨平台移動開發的技術與框架。其主要特性包括如下方面:
- flutter 自帶有多種部件和 ui 元素。
- 您不但可以免費使用 flutter,還能自定義其功能。
- flutter 是全球開發人員正在使用的第二最受歡迎的跨平台技術。
- flutter 不但易於學習、支持快速且面向對象的程式語言-dart,而且帶有用戶友好的 ui。
- flutter 使用了 c++渲染引擎。
- 建立在響應式編程基礎上的 flutter 架構,足以與 react native 相媲美。
3. flutter 對於應用開發的優勢
商業級應用的平台穩定性和整體性能,對於任何企業都是至關重要的。而 flutters 恰好能夠通過如下方面,來實時支持和及時調整,以保證客戶的滿意度:
高性能
由 flutter 開發的應用程式,可以被直接編譯成機器代碼,並通過代碼解釋來抑制各種錯誤。這為跨平台技術的實現提供了高性能的基礎。
節約資源
定製化的應用開發往往需要在渲染引擎中加入高級的編譯。而 flutter 可以通過調整用戶界面,並將其轉移到某個平台上,來輕鬆地實現編譯,並節省渲染資源的使用。
開發競爭力
與其他跨平台語言相比,flutter 可以提供更有價值、成本更低的工作流程。而與原生開發相比,建立 flutter 移動應用所需的工時則會更少。
高效穩定
由於 flutter 的語法需要更少的代碼量,且更易於調試和升級,因此它可以協助開發人員更快地編寫出具有較高生產力的代碼。據此,由 flutter 製作出的即用型工具往往能夠提供出色的平台穩定性。
更快的面市時間
與使用其他程式語言創建應用程式相比,開發 flutter 應用所需的時間會更少,當然也就加快了應用程式的編碼交付、以及面市時間。
4. 什麼是 flutter 開發框架?
自 2017 年 5 月面市以來,flutter 是 github 上增長最快的存儲庫之一。其改進版框架--v2.0 於 2021 年 3 月發布。目前,flutter 框架包含了一個完整的 ui 軟體開發工具包(software development kit,sdk)、以及一個擁有包括:滑塊、文本輸入、以及按鈕等各種可重用 ui 元素的小部件庫。它的這些組件和工具包都是免費且開源的。
flutter 的應用開發服務可以支持那些具有完整的 flutter 元素的 android、ios、windows、linux、以及 mac 系統。由於它能夠模仿平台獨有的原生體驗,因此您可以在任何設備(如行動裝置、電視、平板電腦等)上運行 flutter 應用。此外,藉助 flutter 的各種測試和集成 api、渲染引擎、現成的小部件、以及命令行工具,您還可以開發出性能卓越的應用。
5. flutter 基於何種程式語言?
如前所述,flutter 採用的是一種旨在取代經典的 javascript 的 dart 程式語言。在 dart 程式的幫助下,開發人員可以直接在伺服器上運行某個應用程式。而在瀏覽器中,程式代碼會被反編譯器 dart2js 轉換為 javascript。例如,google 新的作業系統平台-fuchsia 上的各種應用程式,就是使用 dart 創建的。flutters 的結構完全可與著名的、面向對象的程式語言 java 和 c#相媲美。
7. flutter 應用開發的優點
每種程式語言都有自身的優、缺點,flutter 也不例外。除了對開發人員十分友好以外,flutter 還具有如下各種源於程式語言和開發工具的固有優點:
一個適用於所有平台的代碼庫
與傳統的 android 編寫方法、以及在 ios 設備上調用其他代碼庫的方式不同,flutter 只需一個代碼庫。flutter 代碼的可重用性功能,方便了開發人員僅編寫一個代碼庫,並將其運用到 android、ios、web 以桌面等環境中。如此單一的代碼庫不但有助於減少開發時間和成本,而且能夠更快地啟動您的應用程式。
小部件(widget)的概念提供了無數的可能性
flutter 的自定義小部件,非常適合為您開發出色的應用視覺效果。同時,flutter 應用開發服務提供器(service provider)也會協助您構建出一個精良的應用程式,而且您不必擔心自己的應用是否會在其他設備上存在的 ui 問題。
豐富的庫
flutter 使用了流行的框架--skia 圖形庫。這是一個小巧而成熟的開源圖形庫。每次視圖設計出現更改時,它都會重新設計應用程式中的 ui。因此,用戶會獲得快速加載和流暢使用的體驗。
使用熱重載進行快速測試
在測試了熱重載功能後,應用程式的開發速度往往會加快。如果您使用 flutter 的話,則無需重新加載應用程式,即可查看到代碼的更改效果。據此,您可以輕鬆地、實時地更改自己的應用程式,以便在開發過程中儘早發現並修復代碼中的錯誤。
8. flutter 應用程式的缺點
flutter 的缺陷雖然不至於破壞某個交易或應用,但是它作為應用工具包的確存在著如下方面的不足:
體積大
由於帶有各種小部件,因此 flutter 應用程式往往占用大量的有限空間。而正是因為它體積臃腫,因此需要更長的時間去下載、或更新數據。
更新較為複雜
flutter 需要更新相關模塊,以升級作業系統中的編程要素,其中既涉及到 flutter 模塊與程式中固定元素的結合,又涉及到重新編譯、以及在設備上重新安裝。
有限的工具和庫集
雖然 flutter 已經能夠提供市場上具有最新功能的各種工具庫,但是如果您需要創建特定的工具、擴展某個功能、或是開發一個社區的話,就需要等待一段時間了。例如:flutter 目前尚無法完全支持 3d 觸摸應用,以及一些需要頻繁調用相機或電話等功能。
9. 基於 flutter 開發的應用
隨著 flutter 應用開發熱度的持續升溫,以及對於 flutter 開發人員需求的不斷增長,alibaba、yandex、airbnb、philips hue、reflectly、uber、hookle、以及 ebay 等頂級新技術公司都持續創建了針對各種用途的 flutter 應用服務。

10. 如何開始使用 flutter?
由於 flutter 應用的學習曲線比較平滑,因此 flutter 開發人員可以通過友好的 ui,為自己的應用順利地構建出自定義的小部件,並將它們與現有的部件進行無縫結合。總地說來,您可以按照如下步驟開始使用 flutter:
- 學習和理解 dart、以及其他相關的程式語言,例如 c 語言和一些面向對象的概念。
- 加入 gitter 聊天室,與具有 flutter 實踐經驗的開發人員進行交流。
- 為待開發的應用程式類型和設計,提供準確的要求和功能列表。
- 通過加入 slack 和其他 flutter 社區,以了解 github 存儲庫,並獲取足夠的 flutter 知識。
- 參加各種技術會議、教程、研討會、甚至是黑客馬拉松來獲取業界動態。
- 參加與 flutter 相關的網絡研討會、在線課程、瀏覽 flutter 博客、以及參與代碼挑戰賽等。
- 安裝編輯器,並了解其基本原理。
- 根據框架的更新和版本,檢查對於系統的要求。
- 選定作業系統,下載合適的 flutter sdk 版本。
11. 為什麼 flutter 是 web 開發的最佳選擇?
如果您正準備開發一個可以在任何平台上流暢運行的 web 應用,那麼 flutter 能允許您構建出,除了智慧型手機之外,可以運行在 linux、mac 和 windows 上的應用程式。同時,您可以自定義應用界面上的圖標、顏色、以及布局等元素,以提高界面的易用性。此外,初創公司也可以使用 google firebase 框架,來構建無伺服器應用程式,以支持後端應用,並加快開發的整個周期。