為什么應(yīng)用開發(fā)者喜歡Flutter?因?yàn)镕lutter很棒。
Flutter迎合了企業(yè)(通過(guò)提供合理的開發(fā)成本)和開發(fā)人員(通過(guò)提供出色的可用性和速度)。這就是一些大公司轉(zhuǎn)向Flutter的原因,例如Google Ads、阿里巴巴、Reflectly等等。
谷歌在構(gòu)建Flutter方面做得很好,他們繼續(xù)讓這個(gè)框架變得更好。
在這篇文章中,我將簡(jiǎn)要介紹Flutter及其全新的優(yōu)勢(shì),并討論為什么這個(gè)框架值得使用。另外,我將討論可能阻礙大公司采用Flutter的原因。
但首先要做的事情。
Flutter的要點(diǎn)是什么?
以下是您可能已經(jīng)知道的有關(guān)Flutter的內(nèi)容:
它是一個(gè)開源、跨平臺(tái)的工具包
應(yīng)用程序是用Dart編程語(yǔ)言編寫的
它有自己的圖形引擎(Skia)
它正式支持三個(gè)平臺(tái):iOS、Android和Web(測(cè)試版)
非官方——它也支持桌面
Google于2018年2月底推出了Flutter的第一個(gè)版本。截至2020年4月,1.12版本可用。
Flutter有什么特別之處?
Flutter結(jié)合了原生應(yīng)用的質(zhì)量和跨平臺(tái)開發(fā)的靈活性。
實(shí)際上,許多跨平臺(tái)工具讓您只需編寫一次代碼即可在iOS和Android上使用。然而,并非所有人都可以像原生應(yīng)用一樣呈現(xiàn)相同的外觀。
但這正是Flutter所做的:Flutter不是在原生UI組件(如React Native和Xamarin)之上的包裝器,而是從頭開始繪制UI。
Flutter保持了應(yīng)用程序的原生體驗(yàn)和感覺(jué),您不必?fù)?dān)心它在任何平臺(tái)上的性能。
此外,由于Flutter是一個(gè)開源框架,任何開發(fā)人員都可以在GitHub上對(duì)其進(jìn)行更改并發(fā)送合并請(qǐng)求。如果你看看Flutter的受歡迎程度——90.4K GitHub星數(shù)、12k分叉和18,445次提交——你就會(huì)明白開發(fā)人員喜歡Flutter并為讓它變得更好做出貢獻(xiàn)。
顫振如何工作?
Flutter不直接編譯到iOS或Android應(yīng)用程序。應(yīng)用程序基于渲染引擎(基于C++構(gòu)建)和Flutter(基于Dart構(gòu)建)的組合啟動(dòng)。以這種方式生成的所有文件都附加到特定平臺(tái)的每個(gè)應(yīng)用程序和SDK程序集軟件。
這就像游戲開發(fā):游戲不分配其框架,功能由游戲引擎執(zhí)行。Flutter軟件也是如此——所有基于Flutter SDK的應(yīng)用程序都將部分原生框架替換為Flutter元素。
盡管它會(huì)影響最終應(yīng)用程序的大小,但性能仍然相當(dāng)不錯(cuò)——渲染速度高達(dá)120 FPS。
由于ARM處理器的原生編譯、簡(jiǎn)單的渲染以及一組集成的小部件和工具,F(xiàn)lutter使開發(fā)過(guò)程更加簡(jiǎn)單。
此外,它還提供了一些非常美味的功能,例如Hot Reload。
以下是它的工作原理:
當(dāng)您單擊Hot Reload按鈕時(shí),代碼中的所有更改都會(huì)立即顯示在小工具、模擬器和模擬器中。該應(yīng)用程序從您點(diǎn)擊熱重載之前的位置繼續(xù)工作:代碼更新,但繼續(xù)執(zhí)行。
為什么為跨平臺(tái)應(yīng)用選擇Flutter?
新的Flutter版本將不斷推出更多高級(jí)功能。但是已經(jīng)有很多增強(qiáng)的功能完美地解釋了為什么Flutter如此受歡迎。
首先,與流行的看法相反,使用Flutter進(jìn)行跨平臺(tái)開發(fā)并不會(huì)使軟件變得更糟。
Flutter帶有適用于Android和iOS界面的所有原生小部件,例如Material Design和Cupertino。此外,該框架可以改變單獨(dú)元素的行為,為應(yīng)用程序的用戶創(chuàng)建類似的用戶體驗(yàn)。
其次,F(xiàn)lutter使得在dev模式下實(shí)現(xiàn)離散文件編譯成為可能。JiT編譯加速了開發(fā)和軟件調(diào)試。
第三,F(xiàn)lutter允許靈活且可擴(kuò)展的后端。
它支持Firebase、SQLite等插件(pub.dev將幫助您找到所需的插件)。Firebase使應(yīng)用程序的基礎(chǔ)架構(gòu)具有可擴(kuò)展性、無(wú)服務(wù)器和冗余性。
因此,如果您正在開發(fā)需要實(shí)時(shí)數(shù)據(jù)庫(kù)或云功能的應(yīng)用程序,F(xiàn)lutter將為您提供支持。
最后一個(gè):Flutter非常好學(xué)。
從一開始,Google開發(fā)人員就設(shè)定了降低進(jìn)入門檻的目標(biāo)。他們仔細(xì)制定了開發(fā)人員可以使用的文檔和資源。它甚至有一些特殊的部分,您可以根據(jù)您的專業(yè)來(lái)開始學(xué)習(xí)該框架:
面向Android開發(fā)者的Flutter
適用于iOS開發(fā)者的Flutter
面向React Native開發(fā)者的Flutter
Flutter for Xamarin.Forms開發(fā)人員
面向Web開發(fā)人員的Flutter
由于Flutter的詳細(xì)文檔,即使您只有使用Unity圖形工具制作Android游戲的經(jīng)驗(yàn),您也將了解如何在Dart中編寫代碼。
Flutter 1.12(最新版本)及其優(yōu)勢(shì)
讓我們看看Flutter在其最新的1.12版本中引入了哪些熱門特性:
iOS深色模式
從現(xiàn)在開始,F(xiàn)lutter支持iOS 13的外觀和感覺(jué),包括Cupertino小部件中完整的暗模式支持。這不僅僅是換掉背景,而是調(diào)整其余顏色以使其成為一個(gè)很好的匹配。
添加到應(yīng)用程序支持
另一個(gè)重大改進(jìn)是Add-to-App更新,用于將Flutter集成到現(xiàn)有的iOS/Android應(yīng)用程序中。
新版Flutter支持在應(yīng)用中添加一個(gè)全屏Flutter實(shí)例,以及:
Java、Kotlin、Objective-C和Swift中的穩(wěn)定API集成
支持在Flutter模塊中使用插件
通過(guò)Android AAR和iOS框架的其他集成機(jī)制
測(cè)試版網(wǎng)絡(luò)支持
新的Flutter master、dev和beta通道為web提供了改進(jìn)的支持。想要一些例子嗎?
這是Rivet,這是一個(gè)使用Flutter和Firebase創(chuàng)建其應(yīng)用程序的Web版本的教育項(xiàng)目。
新版本的框架引入了Dart 2.7。
此更新增強(qiáng)了使用Dart 2.5運(yùn)行的體驗(yàn),即安全字符串如何處理能力和擴(kuò)展過(guò)程。這有助于開發(fā)人員在變量獲得零值并解析字符串中的整數(shù)時(shí)防止錯(cuò)誤。
以下是最新Flutter版本的其他一些功能:
macOS桌面支持(alpha)
多設(shè)備調(diào)試
黃金形象測(cè)試
Android構(gòu)建改進(jìn)
更新的DartPad
這很好,但并非沒(méi)有問(wèn)題:是什么阻礙了開發(fā)人員?
Flutter真的很酷:易于上手,易于使用,并且由一家大型科技公司提供。然而,這就是為什么您的高級(jí)開發(fā)人員可能不會(huì)像您一樣樂(lè)觀的原因。
Dart的(低)受歡迎程度
與適用于Android的Java/Kotlin或適用于iOS的Swift/Objective-C不同,Dart的流行度還不高。而且它是極不可能的。
Dart并不難學(xué),而且有大量的教程(比如這個(gè)),但一些開發(fā)者仍然堅(jiān)持使用Java和其他熟悉的工具。
同時(shí),你不能使用Flutter而不使用Dart:即使是Flutter的殺手級(jí)功能——Hot Reload——如果沒(méi)有Dart也無(wú)法工作。
不支持所有設(shè)備
您不能為iPhone 5s之前的32位iOS設(shè)備制作應(yīng)用程序。Windows桌面也是如此:你不能在32位筆記本電腦上運(yùn)行Flutter。
而且Flutter開發(fā)人員沒(méi)有修復(fù)它的計(jì)劃,因?yàn)椤斑@將涉及大量工作”。
因此,如果您想使用Flutter進(jìn)行編碼,則必須擁有一臺(tái)x64位設(shè)備或升級(jí)您現(xiàn)在使用的設(shè)備。
圖書館數(shù)量有限
雖然有很多Flutter庫(kù),例如fl_chart(用于在Flutter中繪制圖形)、path_provider(用于在Android/iOS上定位文件)、flutter_sliding_tutorial等等,但數(shù)量仍然有限。
這不難解釋:Flutter是一個(gè)相對(duì)較新的框架,開發(fā)人員沒(méi)有足夠的時(shí)間來(lái)開發(fā)與原生語(yǔ)言一樣多的庫(kù)。
盡管如此,最重要的庫(kù)已經(jīng)存在,而且新的庫(kù)一直在出現(xiàn)。
Flutter應(yīng)用程序體積更大
與本地開發(fā)的應(yīng)用程序相比。Flutter的團(tuán)隊(duì)測(cè)量了最小的應(yīng)用程序大小(沒(méi)有Material組件,只有一個(gè)Center小部件,使用flutter build apk --split-per-abi構(gòu)建),捆綁和壓縮后,ARM為4.3 MB,ARM 64為4.6 MB。
現(xiàn)在的基本應(yīng)用程序在Android中約為4MB,在iOS中約為10MB。
很少經(jīng)過(guò)驗(yàn)證的專業(yè)知識(shí)
Flutter可能受到開發(fā)者的喜愛(ài),但大公司并沒(méi)有急于停止制作原生(或React Native)應(yīng)用程序而轉(zhuǎn)向Flutter。
對(duì)于大多數(shù)公司來(lái)說(shuō),最大的問(wèn)題是Flutter的新穎性。Dart比Java或C#更新,而Flutter本身是全新的。
當(dāng)然,有很多Flutter開源應(yīng)用程序,包括Google Ads或Hamilton等大型應(yīng)用程序(在此處查看完整列表),但數(shù)量不多。
沒(méi)有人愿意成為采用全新框架的人,幾個(gè)月后就不得不切換到原生開發(fā)。
但更重要的是,F(xiàn)lutter是你一個(gè)人走的路:
沒(méi)有多少已確認(rèn)的最佳實(shí)踐(至少在大型項(xiàng)目中)
總是有機(jī)會(huì)你是第一個(gè)面臨這個(gè)特殊問(wèn)題的人
希望有人能幫助你——你必須小心翼翼地邁出每一步,并準(zhǔn)備好面對(duì)后果
在哪里使用顫振
首先,當(dāng)你有有限的時(shí)間和金錢來(lái)驗(yàn)證商業(yè)模式時(shí),最好將Flutter用于MVP初創(chuàng)公司。
Flutter應(yīng)用更便宜:
與兩個(gè)本機(jī)應(yīng)用程序的成本相比
開發(fā)團(tuán)隊(duì)規(guī)??s小40%
線性過(guò)程
您可以花更多時(shí)間在應(yīng)用程序的功能上
通過(guò)選擇Flutter項(xiàng)目,您可以減少開發(fā)時(shí)間。與原生相比,F(xiàn)lutter開發(fā)花費(fèi)的時(shí)間并不多。
這是一個(gè)例子。假設(shè)您正在為兩個(gè)平臺(tái)制作類似Instagram的應(yīng)用程序。iOS開發(fā)大約需要700小時(shí),Android也需要700小時(shí)。
使用Flutter,您將覆蓋兩個(gè)平臺(tái)并節(jié)省時(shí)間:700h Android + 700h iOS與700h Flutter。
您可以節(jié)省大量時(shí)間花在其他事情上,例如完善功能。
總結(jié)
如果你在有限的時(shí)間和有限的預(yù)算下構(gòu)建應(yīng)用程序,F(xiàn)lutter絕對(duì)值得一試。
它就像看起來(lái)一樣好,并且隨著每次新的更新,Google開發(fā)人員都會(huì)添加更多甚至用于跨平臺(tái)開發(fā)的工具。
當(dāng)然,對(duì)于C#和Java愛(ài)好者來(lái)說(shuō),這個(gè)框架可能看起來(lái)不尋常,但這并不意味著它會(huì)迫使你走出舒適區(qū)。掌握了細(xì)微的語(yǔ)法差異后,您很快就會(huì)發(fā)現(xiàn)UI開發(fā)比原生開發(fā)快幾倍。
如果你成功了,如果Flutter繼續(xù)存在,它可以為你帶來(lái)一些令人興奮的移動(dòng)開發(fā)體驗(yàn)和未來(lái)的機(jī)會(huì)。