隨著跨平臺開發(fā)在軟件交付市場上的迅速流行,全球頂尖的移動應(yīng)用開發(fā)公司也聚焦到了該領(lǐng)域。近年來,各種簡化了跨平臺開發(fā)的工具也如雨后春筍般層出不窮。其中,最知名的工具之一當(dāng)屬Flutter。它不但可以讓您通過簡單的數(shù)行代碼,快速地開發(fā)出適用于Android和iOS平臺的原生應(yīng)用程序,而且可以減少專業(yè)開發(fā)人員的工作量與用時,以便加快交付可擴展的移動應(yīng)用。
什么是Flutter?
由Google創(chuàng)建的Flutter,是一種被用作開發(fā)原生Android和iOS應(yīng)用的開源技術(shù)。其Flutter SDK允許開發(fā)者在較短的時間內(nèi),通過協(xié)同使用各種工具、小部件、以及綜合框架,來創(chuàng)建和部署直觀的移動應(yīng)用。目前,Google App Store中的Flutter應(yīng)用已超過50,000個,其中不乏eBay和Alibaba等大廠應(yīng)用。Google甚至將Flutter工具包放到了Google Home Hub UI、及其各種Google Assistant模塊中,以便大型組織利用Flutter來開發(fā)出用戶友好的Web和移動應(yīng)用。
Flutter概覽
據(jù)??統(tǒng)計??,目前有大約三分之一的移動開發(fā)人員正在使用Flutter作為跨平臺移動開發(fā)的技術(shù)與框架。其主要特性包括如下方面:
- Flutter自帶有多種部件和UI元素。
- 您不但可以免費使用Flutter,還能自定義其功能。
- Flutter是全球開發(fā)人員正在使用的第二最受歡迎的跨平臺技術(shù)。
- Flutter不但易于學(xué)習(xí)、支持快速且面向?qū)ο蟮木幊陶Z言—Dart,而且?guī)в杏脩粲押玫腢I。
- Flutter使用了C++渲染引擎。
- 建立在響應(yīng)式編程基礎(chǔ)上的Flutter架構(gòu),足以與React Native相媲美。
Flutter對于應(yīng)用開發(fā)的優(yōu)勢
商業(yè)級應(yīng)用的平臺穩(wěn)定性和整體性能,對于任何企業(yè)都是至關(guān)重要的。而Flutters恰好能夠通過如下方面,來實時支持和及時調(diào)整,以保證客戶的滿意度:
高性能
由Flutter開發(fā)的應(yīng)用程序,可以被直接編譯成機器代碼,并通過代碼解釋來抑制各種錯誤。這為跨平臺技術(shù)的實現(xiàn)提供了高性能的基礎(chǔ)。
節(jié)約資源
定制化的應(yīng)用開發(fā)往往需要在渲染引擎中加入高級的編譯。而Flutter可以通過調(diào)整用戶界面,并將其轉(zhuǎn)移到某個平臺上,來輕松地實現(xiàn)編譯,并節(jié)省渲染資源的使用。
開發(fā)競爭力
與其他跨平臺語言相比,F(xiàn)lutter可以提供更有價值、成本更低的工作流程。而與原生開發(fā)相比,建立Flutter移動應(yīng)用所需的工時則會更少。
高效穩(wěn)定
由于Flutter的語法需要更少的代碼量,且更易于調(diào)試和升級,因此它可以協(xié)助開發(fā)人員更快地編寫出具有較高生產(chǎn)力的代碼。據(jù)此,由Flutter制作出的即用型工具往往能夠提供出色的平臺穩(wěn)定性。
更快的面市時間
與使用其他編程語言創(chuàng)建應(yīng)用程序相比,開發(fā)Flutter應(yīng)用所需的時間會更少,當(dāng)然也就加快了應(yīng)用程序的編碼交付、以及面市時間。
什么是Flutter開發(fā)框架?
自2017年5月面市以來,F(xiàn)lutter是GitHub上增長最快的??存儲庫??之一。其改進版框架--v2.0于2021年3月發(fā)布。目前,F(xiàn)lutter框架包含了一個完整的UI軟件開發(fā)工具包(software development kit,SDK)、以及一個擁有包括:滑塊、文本輸入、以及按鈕等各種可重用UI元素的小部件庫。它的這些組件和工具包都是免費且開源的。
Flutter的應(yīng)用開發(fā)服務(wù)可以支持那些具有完整的Flutter元素的Android、iOS、Windows、Linux、以及Mac系統(tǒng)。由于它能夠模仿平臺獨有的原生體驗,因此您可以在任何設(shè)備(如移動設(shè)備、電視、平板電腦等)上運行Flutter應(yīng)用。此外,借助Flutter的各種測試和集成API、渲染引擎、現(xiàn)成的小部件、以及命令行工具,您還可以開發(fā)出性能卓越的應(yīng)用。
Flutter基于何種編程語言?
如前所述,F(xiàn)lutter采用的是一種旨在取代經(jīng)典的JavaScript的Dart編程語言。在Dart程序的幫助下,開發(fā)人員可以直接在服務(wù)器上運行某個應(yīng)用程序。而在瀏覽器中,程序代碼會被反編譯器Dart2js轉(zhuǎn)換為JavaScript。例如,Google新的操作系統(tǒng)平臺—Fuchsia上的各種應(yīng)用程序,就是使用Dart創(chuàng)建的。Flutters的結(jié)構(gòu)完全可與著名的、面向?qū)ο蟮木幊陶Z言Java和C#相媲美。
Flutter應(yīng)用開發(fā)的優(yōu)點
每種編程語言都有自身的優(yōu)、缺點,F(xiàn)lutter也不例外。除了對開發(fā)人員十分友好以外,F(xiàn)lutter還具有如下各種源于編程語言和開發(fā)工具的固有優(yōu)點:
一個適用于所有平臺的代碼庫
與傳統(tǒng)的Android編寫方法、以及在iOS設(shè)備上調(diào)用其他代碼庫的方式不同,F(xiàn)lutter只需一個代碼庫。Flutter代碼的可重用性功能,方便了開發(fā)人員僅編寫一個代碼庫,并將其運用到Android、iOS、Web以桌面等環(huán)境中。如此單一的代碼庫不但有助于減少開發(fā)時間和成本,而且能夠更快地啟動您的應(yīng)用程序。
小部件(Widget)的概念提供了無數(shù)的可能性
Flutter的自定義小部件,非常適合為您開發(fā)出色的應(yīng)用視覺效果。同時,F(xiàn)lutter應(yīng)用開發(fā)服務(wù)提供器(service provider)也會協(xié)助您構(gòu)建出一個精良的應(yīng)用程序,而且您不必擔(dān)心自己的應(yīng)用是否會在其他設(shè)備上存在的UI問題。
豐富的庫
Flutter使用了流行的框架--Skia圖形庫。這是一個小巧而成熟的開源圖形庫。每次視圖設(shè)計出現(xiàn)更改時,它都會重新設(shè)計應(yīng)用程序中的UI。因此,用戶會獲得快速加載和流暢使用的體驗。
使用熱重載進行快速測試
在測試了熱重載功能后,應(yīng)用程序的開發(fā)速度往往會加快。如果您使用Flutter的話,則無需重新加載應(yīng)用程序,即可查看到代碼的更改效果。據(jù)此,您可以輕松地、實時地更改自己的應(yīng)用程序,以便在開發(fā)過程中盡早發(fā)現(xiàn)并修復(fù)代碼中的錯誤。
Flutter應(yīng)用程序的缺點
Flutter的缺陷雖然不至于破壞某個交易或應(yīng)用,但是它作為應(yīng)用工具包的確存在著如下方面的不足:
體積大
由于帶有各種小部件,因此Flutter應(yīng)用程序往往占用大量的有限空間。而正是因為它體積臃腫,因此需要更長的時間去下載、或更新數(shù)據(jù)。
更新較為復(fù)雜
Flutter需要更新相關(guān)模塊,以升級操作系統(tǒng)中的編程要素,其中既涉及到Flutter模塊與程序中固定元素的結(jié)合,又涉及到重新編譯、以及在設(shè)備上重新安裝。
有限的工具和庫集
雖然Flutter已經(jīng)能夠提供市場上具有最新功能的各種工具庫,但是如果您需要創(chuàng)建特定的工具、擴展某個功能、或是開發(fā)一個社區(qū)的話,就需要等待一段時間了。例如:Flutter目前尚無法完全支持3D觸摸應(yīng)用,以及一些需要頻繁調(diào)用相機或電話等功能。
基于Flutter開發(fā)的應(yīng)用
隨著Flutter應(yīng)用開發(fā)熱度的持續(xù)升溫,以及對于Flutter開發(fā)人員需求的不斷增長,Alibaba、Yandex、Airbnb、Philips Hue、Reflectly、Uber、Hookle、以及eBay等頂級新技術(shù)公司都持續(xù)創(chuàng)建了針對各種用途的Flutter應(yīng)用服務(wù)。
如何開始使用Flutter?
由于Flutter應(yīng)用的學(xué)習(xí)曲線比較平滑,因此Flutter開發(fā)人員可以通過友好的UI,為自己的應(yīng)用順利地構(gòu)建出自定義的小部件,并將它們與現(xiàn)有的部件進行無縫結(jié)合??偟卣f來,您可以按照如下步驟開始使用Flutter:
- 學(xué)習(xí)和理解Dart、以及其他相關(guān)的編程語言,例如C語言和一些面向?qū)ο蟮母拍睢?/li>
- 加入Gitter聊天室,與具有Flutter實踐經(jīng)驗的開發(fā)人員進行交流。
- 為待開發(fā)的應(yīng)用程序類型和設(shè)計,提供準確的要求和功能列表。
- 通過加入Slack和其他Flutter社區(qū),以了解GitHub存儲庫,并獲取足夠的Flutter知識。
- 參加各種技術(shù)會議、教程、研討會、甚至是黑客馬拉松來獲取業(yè)界動態(tài)。
- 參加與Flutter相關(guān)的網(wǎng)絡(luò)研討會、在線課程、瀏覽Flutter博客、以及參與代碼挑戰(zhàn)賽等。
- 安裝編輯器,并了解其基本原理。
- 根據(jù)框架的更新和版本,檢查對于系統(tǒng)的要求。
- 選定操作系統(tǒng),下載合適的Flutter SDK版本。
為什么Flutter是Web開發(fā)的最佳選擇?
如果您正準備開發(fā)一個可以在任何平臺上流暢運行的Web應(yīng)用,那么Flutter能允許您構(gòu)建出,除了智能手機之外,可以運行在Linux、Mac和Windows上的應(yīng)用程序。同時,您可以自定義應(yīng)用界面上的圖標、顏色、以及布局等元素,以提高界面的易用性。此外,初創(chuàng)公司也可以使用Google firebase框架,來構(gòu)建無服務(wù)器應(yīng)用程序,以支持后端應(yīng)用,并加快開發(fā)的整個周期。
譯者介紹
陳峻 (Julian Chen),51CTO社區(qū)編輯,具有十多年的IT項目實施經(jīng)驗,善于對內(nèi)外部資源與風(fēng)險實施管控,專注傳播網(wǎng)絡(luò)與信息安全知識與經(jīng)驗;持續(xù)以博文、專題和譯文等形式,分享前沿技術(shù)與新知;經(jīng)常以線上、線下等方式,開展信息安全類培訓(xùn)與授課。
原文標題:??A Complete Guide on Flutter App Development??,作者:Kiran Beladiya