Flutter應用開發入門指南

Flutter應用開發入門指南

隨著跨平台開發在軟體交付市場上的迅速流行,全球頂尖的行動應用開發公司也聚焦到了該領域。

最後更新 2022/5/6 上午6:12
51CTO
預計閱讀 9 分鐘
分類
Flutter
標籤
Flutter

譯者:陳峻

隨著跨平台開發在軟體交付市場上的迅速流行,全球頂尖的行動應用程式開發公司也聚焦到了該領域。近年來,各種簡化了跨平台開發的工具也如雨後春筍般層出不窮。其中,最知名的工具之一當屬 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 框架,來構建無伺服器應用程式,以支援後端應用程式,並加快開發的整個週期。

繼續探索

延伸閱讀

更多文章