我為什么用Flutter開(kāi)發(fā)-2年開(kāi)發(fā)心得

為什么是Flutter

在19年初的時(shí)候,因?yàn)樾枰粋€(gè)人完成一套鮮花o2o的系統(tǒng)。包含前端、后端、移動(dòng)端還有小程序。考慮到時(shí)間成本,所以在移動(dòng)端開(kāi)發(fā)平臺(tái)選型的時(shí)候,主要是考慮跨平臺(tái)技術(shù)。當(dāng)時(shí)并沒(méi)有怎么猶豫就選了Flutter,期間也考慮過(guò)React Native 和uni-app等。之所以很快的選了Flutter,主要是有谷歌的背書(shū),還有閑魚(yú)App的實(shí)踐證明,同時(shí)開(kāi)發(fā)工具和開(kāi)發(fā)邏輯比較接近原生App開(kāi)發(fā)的那一套。

Flutter的入門(mén)

先說(shuō)說(shuō)必要的開(kāi)銷(xiāo),17年的時(shí)候就在觀望跨平臺(tái)開(kāi)發(fā),所以買(mǎi)了臺(tái)Macbook Pro,現(xiàn)在還在用,就是256G的硬盤(pán)有點(diǎn)吃緊。每年的蘋(píng)果開(kāi)發(fā)者賬號(hào)要$99。其他沒(méi)有了。

像我原來(lái)是Android開(kāi)發(fā),大概就是花了1個(gè)星期看看網(wǎng)上的基礎(chǔ)教程同時(shí)裝好開(kāi)發(fā)環(huán)境就開(kāi)始做項(xiàng)目了,當(dāng)時(shí)時(shí)間也比較緊,所以都是邊做邊學(xué)。感覺(jué)Android開(kāi)發(fā)或者iOS開(kāi)發(fā)過(guò)度到flutter應(yīng)該是很快的。前端開(kāi)發(fā)的可能稍微難一點(diǎn),不過(guò)也還好,因?yàn)镈art語(yǔ)言在寫(xiě)樣式的時(shí)候很像CSS和Html,甚至很多屬性名稱(chēng)都是一樣的。

對(duì)于前端開(kāi)發(fā)者來(lái)說(shuō)難點(diǎn)應(yīng)該是在安卓端和iOS端的基礎(chǔ)配置上。雖然Flutter是一個(gè)跨平臺(tái)語(yǔ)言,不過(guò)最終還是要打包成兩端各自的安裝包來(lái)運(yùn)行,所以,像在 Android Studio 和xcode上配置項(xiàng)目的步驟還是少不了的,還有各種權(quán)限的配置等,都是需要一些原生知識(shí)的。這些只要稍微花點(diǎn)時(shí)間學(xué)習(xí)下都是沒(méi)問(wèn)題的。

Flutter能做什么

我們都知道開(kāi)發(fā)一個(gè)App并不是全部自己敲代碼來(lái)完成所有的功能的。很多功能都是需要用第三方成熟的組件來(lái)做的。當(dāng)然并不是為了偷懶,而是因?yàn)檫@樣開(kāi)發(fā)App是相對(duì)高效、穩(wěn)定的。所以,評(píng)價(jià)一個(gè)開(kāi)發(fā)語(yǔ)言好不好的一個(gè)關(guān)鍵因素就是這個(gè)開(kāi)發(fā)語(yǔ)言可用的庫(kù)多不多還有成不成熟

就目前我使用的情況來(lái)說(shuō),基本上常用的第三方組件都能穩(wěn)定的使用,如下

1、支付(微信、支付寶、蘋(píng)果)

2、分享(微信、QQ、微博)

3、推送(安卓廠家、蘋(píng)果推送)

4、音視頻(直播、語(yǔ)聊)

5、即時(shí)通訊

6、登錄(微信、蘋(píng)果、手機(jī)一鍵登錄)

7、地圖(百度、高德)

8、統(tǒng)計(jì)

基礎(chǔ)功能的組件(拍照、網(wǎng)絡(luò)請(qǐng)求、圖片、錄音錄像、播放音視頻、數(shù)據(jù)存儲(chǔ)等)基本上都沒(méi)啥問(wèn)題,就不列舉了。所以,就我目前的經(jīng)驗(yàn)來(lái)說(shuō)絕大多數(shù)的App開(kāi)發(fā)需求都能通過(guò)純Flutter來(lái)開(kāi)發(fā)了,無(wú)需自己寫(xiě)原生代碼。

Flutter使用目前遇到的坑

基本都解決了,就是花了點(diǎn)時(shí)間。其實(shí)不能算是坑,只是我花了一些時(shí)間、寫(xiě)出來(lái)總結(jié)下、如果其他猿遇到,可以參考下少走點(diǎn)彎路

1、微信網(wǎng)頁(yè)打開(kāi)App(通過(guò)微信標(biāo)簽技術(shù)-可直接打開(kāi)App無(wú)需通過(guò)手機(jī)瀏覽器)。目前問(wèn)題已經(jīng)解決。

2、推送,安卓端推送收不到通知。已解決,需要接入廠家推送?;蛘哒乙粋€(gè)靠譜的(免費(fèi)的)第三發(fā)推送sdk。目前使用MobPush。

3、部分iOS設(shè)備微信登錄不了,Universal Link 或xcode配置問(wèn)題,已解決。其實(shí)這應(yīng)該不是Flutter的問(wèn)題,主要是當(dāng)時(shí)不熟悉iOS配置

4、iOS點(diǎn)擊狀態(tài)欄滾動(dòng)到頂部和自定義滾動(dòng)控制有沖突,已解決。配合extended_nested_scroll_view組件來(lái)自定義滾動(dòng)就好

5、nested_scroll_view 組件的一些問(wèn)題可以用extended_nested_scroll_view組件解決(我心目中的年度最佳組件extended_nested_scroll_view)

6、卡頓問(wèn)題,卡頓問(wèn)題不是Flutter才有的,原生App也會(huì)有,主要還是要找到問(wèn)題針對(duì)性的優(yōu)化。

Flutter開(kāi)發(fā)App如何上架

基本和原生App一樣。反正就是打包成兩個(gè)安裝包的。安卓根據(jù)應(yīng)用市場(chǎng)的要求申請(qǐng)軟著、加固好Apk就行了。App store 就要有開(kāi)發(fā)者賬號(hào)、配置好權(quán)限和權(quán)限說(shuō)明,不要獲取沒(méi)用的權(quán)限,基本上第一次審核過(guò)了,以后審核按著規(guī)范都能很快的過(guò)審的。

反而是現(xiàn)在國(guó)內(nèi)的安卓應(yīng)用市場(chǎng)的要求越來(lái)越多。最近、App隱私問(wèn)題鬧得沸沸揚(yáng)揚(yáng),以后App上架需要做Icp備案了。

未來(lái)

相對(duì)其他開(kāi)發(fā)平臺(tái)來(lái)說(shuō),F(xiàn)lutter對(duì)于我有種特殊的意義。因?yàn)?,它讓我在離開(kāi)發(fā)崗位2年多之后又能快速的找回合適的開(kāi)發(fā)工作。我也看著它從開(kāi)始的備受質(zhì)疑到被越來(lái)越多的公司使用。所以,作為一個(gè)30+的猿,我希望能和Flutter走的更遠(yuǎn)一點(diǎn)~

其實(shí)、現(xiàn)在學(xué)習(xí)一門(mén)新的語(yǔ)言成本真的不是很高?,F(xiàn)在的開(kāi)發(fā)語(yǔ)言在語(yǔ)法上基本上都差不多、所以無(wú)需猶豫用什么語(yǔ)言或者平臺(tái)來(lái)做開(kāi)發(fā)、而是要想想什么技術(shù)比較適合自己。如果你想在移動(dòng)端開(kāi)發(fā)繼續(xù)走的更遠(yuǎn)點(diǎn),那么為什么不嘗試下跨平臺(tái)技術(shù)?說(shuō)不定以后大前端會(huì)成為潮流?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容