前言
為每個(gè)移動(dòng)平臺(tái)運(yùn)行一個(gè)開發(fā)團(tuán)隊(duì)會(huì)從其他工作中吸取資源。Flutter是一個(gè)開發(fā)團(tuán)隊(duì)在所有平臺(tái)上構(gòu)建的最流行的方式因篇。
生活圍繞著我們的移動(dòng)設(shè)備和應(yīng)用程序泞辐。在全球范圍內(nèi)笔横,目前有超過(guò)60億智能手機(jī)用戶。此外咐吼,在Google Play Store和Apple App Store之間吹缔,有近五百萬(wàn)個(gè)移動(dòng)應(yīng)用程序可供下載。盡管移動(dòng)應(yīng)用程序市場(chǎng)的競(jìng)爭(zhēng)日益激烈锯茄,但這是許多初創(chuàng)公司和開發(fā)人員集中精力的地方厢塘。
因此,移動(dòng)應(yīng)用程序開發(fā)人員一直在尋找更簡(jiǎn)單肌幽,更快晚碾,更便宜的方式將其產(chǎn)品推向市場(chǎng)是很自然的。有效的開發(fā)工具在這一過(guò)程中發(fā)揮著重要作用喂急。從編程語(yǔ)言到應(yīng)用程序框架再到軟件開發(fā)工具包迄薄,開發(fā)人員使用的工具決定了他們能夠以多快的速度將產(chǎn)品呈現(xiàn)在消費(fèi)者面前。
讓我們來(lái)看看Flutter在受歡迎程度的爆炸式上升以及使其對(duì)開發(fā)人員如此有利的功能煮岁。
什么是Flutter?
Flutter是Google用于跨平臺(tái)移動(dòng)應(yīng)用程序開發(fā)的免費(fèi)開源軟件開發(fā)工具包(SDK)涣易。Flutter使用單一的與平臺(tái)無(wú)關(guān)的代碼庫(kù)画机,幫助開發(fā)人員構(gòu)建高性能,可擴(kuò)展的應(yīng)用程序新症,這些應(yīng)用程序具有適用于Android或IOS的有吸引力且功能強(qiáng)大的用戶界面步氏。Flutter依賴于一個(gè)預(yù)制小部件庫(kù),即使編程或開發(fā)經(jīng)驗(yàn)有限的人也可以輕松快速啟動(dòng)自己的移動(dòng)應(yīng)用程序徒爹。
Flutter由Google于2015年創(chuàng)建荚醒,并于2018年正式推出,并迅速成為開發(fā)人員的首選工具包隆嗅。根據(jù)Statista的說(shuō)法界阁,F(xiàn)lutter最近已經(jīng)超越了React Native,成為頭號(hào)移動(dòng)應(yīng)用程序開發(fā)框架胖喳。
Flutter是如何工作的泡躯?
Flutter是一個(gè)分層系統(tǒng),包括框架丽焊,引擎和特定于平臺(tái)的嵌入器较剃。Flutter應(yīng)用程序是使用Google的Dart面向?qū)ο缶幊陶Z(yǔ)言構(gòu)建的。Flutter引擎本身主要是用C /C++編寫的技健。Skia庫(kù)]是Flutter圖形功能的支柱写穴。
Dart是Flutter許多性能優(yōu)勢(shì)的基礎(chǔ)。它支持提前 (AOT) 和實(shí)時(shí) (JIT) 編譯雌贱。AOT將代碼編譯為較低級(jí)別的本機(jī)代碼啊送,從而使應(yīng)用程序啟動(dòng)速度更快偿短,性能更高。JIT促進(jìn)了Flutter的熱重載能力(下面將更詳細(xì)地討論)删掀,從而縮短了開發(fā)時(shí)間翔冀。Dart 還直接編譯為本機(jī) ARM 或 Intel x64 代碼,從而最大限度地減少 Flutter 應(yīng)用與在運(yùn)行時(shí)依賴于中間代碼解釋的本機(jī)應(yīng)用之間的性能差異披泪。
Flutter的架構(gòu)還使添加功能或適應(yīng)新用戶變得簡(jiǎn)單快捷纤子,因此,它具有高度的可擴(kuò)展性和可擴(kuò)展性款票。
為什么移動(dòng)應(yīng)用程序開發(fā)人員喜歡Flutter控硼?
Flutter的人氣飆升是有充分理由的。Flutter為開發(fā)人員提供了廣泛的優(yōu)勢(shì)艾少,可以加快開發(fā)速度卡乾,并帶來(lái)更加用戶友好的移動(dòng)應(yīng)用程序。
Flutter 與平臺(tái)無(wú)關(guān)
任何計(jì)劃推出移動(dòng)應(yīng)用程序的開發(fā)人員都知道同時(shí)擁有適用于Android和iOS的版本是多么重要缚够。截至2021年9月幔妨,Android以72%的市場(chǎng)份額牢牢控制著移動(dòng)市場(chǎng)。但iOS也擁有龐大的用戶群體谍椅,以及近27%的市場(chǎng)份額误堡。
專注于構(gòu)建單個(gè)本機(jī)應(yīng)用程序會(huì)忽略大部分市場(chǎng),并限制應(yīng)用程序未來(lái)潛在的成功雏吭。但是锁施,開發(fā)單獨(dú)的本機(jī)應(yīng)用程序可能既耗時(shí)又昂貴。
Flutter 使跨平臺(tái)開發(fā)變得簡(jiǎn)單杖们。開發(fā)人員可以利用Flutter的單一代碼庫(kù)悉抵,而不是為每個(gè)平臺(tái)創(chuàng)建單獨(dú)的代碼。
但Flutter對(duì)跨平臺(tái)開發(fā)的適用性超出了代碼的可移植性摘完。與其他跨平臺(tái)框架(如 React Native 和 Xamarin)不同姥饰,F(xiàn)lutter 構(gòu)建的用戶界面 (UI) 也與平臺(tái)無(wú)關(guān),因?yàn)?Flutter 的 Skia 渲染引擎不需要任何特定于平臺(tái)的 UI 組件孝治。
Flutter 簡(jiǎn)化并加速了應(yīng)用程序開發(fā)
Flutter具有許多不同的功能媳否,使跨平臺(tái)移動(dòng)應(yīng)用程序開發(fā)更簡(jiǎn)單,更快捷荆秦。也許最明顯的是篱竭,依靠單個(gè)代碼庫(kù)和UI引擎進(jìn)行跨平臺(tái)開發(fā)的能力減少了為Android和iOS生成應(yīng)用程序版本所需的工作量。
Flutter廣泛的小部件庫(kù)還使開發(fā)人員能夠隨時(shí)訪問(wèn)預(yù)制功能步绸,從而減少整體編碼時(shí)間掺逼。縮短編碼時(shí)間可降低開發(fā)成本瓤介。
Flutter縮短開發(fā)時(shí)間的最重要功能之一是其有狀態(tài)熱重載能力吕喘。依賴于 JIT 編譯的熱重載可加快代碼更改的實(shí)現(xiàn)速度赘那。在熱重載中,F(xiàn)lutter 將代碼更改插入到正在運(yùn)行的 Dart VM 中氯质,而不會(huì)更改保留的狀態(tài)募舟。由于沒(méi)有完全重新編譯應(yīng)用代碼,因此熱重新加載會(huì)更快地呈現(xiàn)代碼修訂的影響闻察。熱重載允許開發(fā)人員實(shí)時(shí)查看更改的效果拱礁,而無(wú)需更改應(yīng)用程序的當(dāng)前狀態(tài)。因此辕漂,開發(fā)人員可以更快地測(cè)試功能和版本以及修復(fù)錯(cuò)誤呢灶。因此,將初始應(yīng)用程序和更新推向市場(chǎng)所需的時(shí)間更少钉嘹。因此鸯乃,F(xiàn)lutter 是構(gòu)建和發(fā)布 MVP 應(yīng)用程序的最佳選擇。
由于其效率跋涣,F(xiàn)lutter是資金有限的初創(chuàng)公司的絕佳選擇缨睡。例如,一家初創(chuàng)公司可能已經(jīng)在網(wǎng)頁(yè)設(shè)計(jì)師上每小時(shí)至少投資75美元陈辱,并將為應(yīng)用程序開發(fā)人員尋找類似或更高的成本宏蛉。Flutter通過(guò)縮短開發(fā)時(shí)間并加快產(chǎn)品上市速度,為具有成本意識(shí)的企業(yè)提供了有效的開發(fā)工具性置。
Flutter 易于學(xué)習(xí)和使用
Flutter很容易上手,無(wú)論你是否有豐富的開發(fā)經(jīng)驗(yàn)揍堰。經(jīng)常使用其他語(yǔ)言(如Java鹏浅,Python,C#或其他面向?qū)ο笳Z(yǔ)言)的開發(fā)人員將毫無(wú)問(wèn)題地將Flutter和Dart添加到他們的庫(kù)中屏歹,因?yàn)镈art在結(jié)構(gòu)和語(yǔ)法上都與這些語(yǔ)言相似隐砸。此外,對(duì)于那些開發(fā)經(jīng)驗(yàn)較少的人來(lái)說(shuō)蝙眶,F(xiàn)lutter的擴(kuò)展小部件庫(kù)使得構(gòu)建應(yīng)用程序變得容易季希,而無(wú)需編寫大量代碼;有幾個(gè)平臺(tái)使用Flutter來(lái)構(gòu)建應(yīng)用程序而無(wú)需編寫任何代碼!
Flutter也有很好的文檔幽纷。除了一般的參考手冊(cè)外式塌,F(xiàn)lutter 幫助資源還包括許多示例應(yīng)用程序、一本向開發(fā)人員展示如何完成常見(jiàn)任務(wù)的“食譜”友浸,甚至是對(duì) Flutter 訓(xùn)練營(yíng)的建議峰尝。
但是Flutter的廣泛采用創(chuàng)造了一個(gè)蓬勃發(fā)展的社區(qū),為新的或有經(jīng)驗(yàn)的Flutter開發(fā)人員提供幫助和資源收恢。開發(fā)人員可以通過(guò)各種博客武学、論壇和其他在線社區(qū)查找信息和幫助祭往,包括:
- 堆棧溢出顫動(dòng)維基和問(wèn)題頁(yè)面
- Flutter Awesome,一個(gè)全面的Flutter資源火窒,提供教程硼补,庫(kù),UI熏矿,應(yīng)用程序等已骇。
- Flutter-dev Google Group,為開發(fā)人員提供技術(shù)問(wèn)題幫助的絕佳來(lái)源曲掰。
- Flutter-dev subreddit疾捍,官方Reddit Flutter社區(qū),用戶共享資源和專業(yè)知識(shí)栏妖。
這些只是可用資源中的一小部分乱豆。只需快速搜索即可找到更多。
Flutter 縮放良好
開發(fā)人員必須能夠輕松地添加功能或增加應(yīng)用程序的用戶群吊趾,而不會(huì)破壞它宛裕。Flutter在后端使用Google的Firebase應(yīng)用程序,該應(yīng)用程序在構(gòu)建時(shí)考慮了可擴(kuò)展性论泛。Firebase 提供實(shí)時(shí)數(shù)據(jù)庫(kù)更新揩尸,有助于確保數(shù)據(jù)在客戶端之間快速同步。Firebase 還會(huì)優(yōu)化并最大限度地減少同步所需的更新數(shù)量屁奏,這意味著添加功能用戶不會(huì)對(duì)性能產(chǎn)生負(fù)面影響岩榆。
Flutter應(yīng)用程序提供出色的用戶體驗(yàn)
要使移動(dòng)應(yīng)用程序真正成功,它們必須具有精心設(shè)計(jì)坟瓢,有吸引力且功能強(qiáng)大的用戶界面勇边。Flutter擅長(zhǎng)創(chuàng)造出色的用戶體驗(yàn)。
Flutter的內(nèi)置小部件目錄專注于提供高性能折联,視覺(jué)上令人興奮的應(yīng)用程序元素粒褒。使用Flutter創(chuàng)建從最基本到更復(fù)雜的接口的多個(gè)組件的UI幾乎毫不費(fèi)力。
Flutter 應(yīng)用程序直接編譯到本機(jī)代碼中诚镰,無(wú)需中間代碼解釋步驟奕坟。與其他跨平臺(tái)開發(fā)應(yīng)用程序(如 React Native)相比,這些應(yīng)用程序需要在代碼和本機(jī)元素之間架起橋梁清笨,F(xiàn)lutter 消除了降低性能的額外處理步驟月杉,使其明顯更快。
使用Flutter的缺點(diǎn)是什么抠艾?
像任何其他SDK一樣沙合,F(xiàn)lutter并不完美。雖然它的弱點(diǎn)被它的優(yōu)勢(shì)所抵消,但未來(lái)的Flutter開發(fā)人員應(yīng)該意識(shí)到它的局限性首懈。
大型應(yīng)用
應(yīng)用程序大小是許多開發(fā)人員非常關(guān)注的問(wèn)題绊率。盡管大多數(shù)移動(dòng)設(shè)備都具有充足的存儲(chǔ)空間,但大量照片究履、視頻和圖形密集型游戲可以快速將設(shè)備填滿容量滤否。設(shè)備越舊,問(wèn)題就越大最仑。
Flutter 應(yīng)用程序是獨(dú)立的藐俺,并且具有運(yùn)行應(yīng)用程序所需的所有代碼,而不是依賴于平臺(tái)元素泥彤,從而導(dǎo)致應(yīng)用程序大小比其他應(yīng)用程序更大欲芹。對(duì)于希望吸引最廣泛潛在用戶的開發(fā)人員來(lái)說(shuō),F(xiàn)lutter應(yīng)用程序的大小可能會(huì)有問(wèn)題吟吝,并導(dǎo)致開發(fā)人員選擇不同的語(yǔ)言菱父。
缺少第三方庫(kù)
訪問(wèn)第三方庫(kù)有助于減少開發(fā)時(shí)間和成本,許多開發(fā)人員嚴(yán)重依賴第三方資源剑逃。Flutter的內(nèi)置小部件目錄非常廣泛浙宜,F(xiàn)lutter的官方軟件包網(wǎng)站有數(shù)千種選擇。但是蛹磺,由于Flutter仍然相對(duì)年輕粟瞬,因此第三方庫(kù)的資源仍然少于可用于其他開發(fā)工具的資源。但是萤捆,隨著越來(lái)越多的用戶過(guò)渡到Flutter裙品,第三方Flutter環(huán)境正在迅速增長(zhǎng),您可以預(yù)期隨著時(shí)間的推移俗或,這個(gè)問(wèn)題會(huì)逐漸消失市怎。
有限的平臺(tái)
目前,F(xiàn)lutter應(yīng)用程序工作的平臺(tái)數(shù)量有限蕴侣。例如,您無(wú)法使用Flutter開發(fā)watchOS或tvOS或Apple CarPlay應(yīng)用程序臭觉。預(yù)計(jì)未來(lái)五年智能手表總銷量將達(dá)到22億臺(tái)昆雀,這是一個(gè)關(guān)鍵的限制。Flutter試圖通過(guò)提供解決方法來(lái)解決此問(wèn)題蝠筑,例如將本機(jī)Apple Watch擴(kuò)展添加到Flutter應(yīng)用程序狞膘。
你必須學(xué)習(xí)Dart
要使用Flutter,你必須了解Google的Dart編程語(yǔ)言什乙。雖然對(duì)于面向?qū)ο蟮某绦騿T來(lái)說(shuō)挽封,Dart并不是那么難學(xué),但它并不像其他面向?qū)ο蟮恼Z(yǔ)言(如C#臣镣,Java和JavaScript)那樣廣為人知或使用辅愿。因此智亮,希望快速進(jìn)入市場(chǎng)的開發(fā)人員可能會(huì)繞過(guò)Flutter,因?yàn)樵黾恿藢W(xué)習(xí)曲線点待。
它可能比iOS更適合Android阔蛉。
Flutter的功能在Android上可能比iOS更好也就不足為奇了。已經(jīng)有iOS功能落后于Android的例子癞埠,因?yàn)镕lutter修復(fù)和更新進(jìn)入了市場(chǎng)状原。畢竟,Android最突出的支持者谷歌是Flutter背后的力量苗踪,Android占據(jù)了移動(dòng)市場(chǎng)的絕大多數(shù)颠区。由于Flutter是Google產(chǎn)品,因此使用它的Android開發(fā)人員比iOS開發(fā)人員更多通铲。有一些建議認(rèn)為毕莱,新的Android功能使其比iOS功能更快地進(jìn)入Flutter。因此测暗,專注于iOS市場(chǎng)的開發(fā)人員應(yīng)該密切關(guān)注未來(lái)的Flutter版本央串。
Flutter的未來(lái)會(huì)怎樣?
在過(guò)去三年使用量的爆炸式增長(zhǎng)之后,F(xiàn)lutter的市場(chǎng)份額開始趨于平穩(wěn)蚤认。但開發(fā)人員不應(yīng)該將此視為Flutter即將消失的跡象隶垮。你只能假設(shè)該工具目前的受歡迎程度將導(dǎo)致谷歌嘗試解決Flutter的一些更成問(wèn)題的問(wèn)題,特別是應(yīng)用程序大小饲宿,而缺乏第三方資源將自行解決。鑒于Flutter的簡(jiǎn)單性和強(qiáng)大功能胆描,它可能會(huì)繼續(xù)被開發(fā)人員廣泛使用瘫想。
新的和時(shí)尚的工具會(huì)出現(xiàn),試圖取代Flutter嗎昌讲?幾乎可以肯定国夜。但在可預(yù)見(jiàn)的未來(lái),F(xiàn)lutter的前景仍然光明短绸。
作者:Theodoros ‘Theo’ Karasavvas
鏈接:https://stackoverflow.blog/2022/02/21/why-flutter-is-the-most-popular-cross-platform-mobile-sdk/