為什麼是Flutter
在19年初的時候,因為需要一個人完成一套鮮花o2o的系統。包含前端、後端、移動端還有小程式。考慮到時間成本,所以在移動端開發平臺選型的時候,主要是考慮跨平臺技術。當時並沒有怎麼猶豫就選了Flutter,期間也考慮過React Native 和uni-app等。之所以很快的選了Flutter,主要是有谷歌的背書,還有閒魚App的實踐證明,同時開發工具和開發邏輯比較接近原生App開發的那一套。
Flutter的入門
先說說必要的開銷,17年的時候就在觀望跨平臺開發,所以買了臺Macbook Pro,現在還在用,就是256G的硬碟有點吃緊。每年的蘋果開發者賬號要$99。其他沒有了。
像我原來是Android開發,大概就是花了1個星期看看網上的基礎教程同時裝好開發環境就開始做專案了,當時時間也比較緊,所以都是邊做邊學。感覺Android開發或者iOS開發過度到flutter應該是很快的。前端開發的可能稍微難一點,不過也還好,因為Dart語言在寫樣式的時候很像CSS和Html,甚至很多屬性名稱都是一樣的。
對於前端開發者來說難點應該是在安卓端和iOS端的基礎配置上。雖然Flutter是一個跨平臺語言,不過最終還是要打包成兩端各自的安裝包來執行,所以,像在 Android Studio 和xcode上配置專案的步驟還是少不了的,還有各種許可權的配置等,都是需要一些原生知識的。這些只要稍微花點時間學習下都是沒問題的。
Flutter能做什麼
我們都知道開發一個App並不是全部自己敲程式碼來完成所有的功能的。很多功能都是需要用第三方成熟的元件來做的。當然並不是為了偷懶,而是因為這樣開發App是相對高效、穩定的。所以,評價一個開發語言好不好的一個關鍵因素就是這個開發語言可用的庫多不多還有成不成熟
就目前我使用的情況來說,基本上常用的第三方元件都能穩定的使用,如下 1、支付(微信、支付寶、蘋果) 2、分享(微信、QQ、微博) 3、推送(安卓廠家、蘋果推送) 4、音視訊(直播、語聊) 5、即時通訊 6、登入(微信、蘋果、手機一鍵登入) 7、地圖(百度、高德) 8、統計 基礎功能的元件(拍照、網路請求、圖片、錄音錄影、播放音視訊、資料儲存等)基本上都沒啥問題,就不列舉了。所以,就我目前的經驗來說絕大多數的App開發需求都能通過純Flutter來開發了,無需自己寫原生程式碼。
Flutter使用目前遇到的坑
基本都解決了,就是花了點時間。其實不能算是坑,只是我花了一些時間、寫出來總結下、如果其他猿遇到,可以參考下少走點彎路
1、微信網頁開啟App(通過微信標籤技術-可直接開啟App無需通過手機瀏覽器)。目前問題已經解決。 2、推送,安卓端推送收不到通知。已解決,需要接入廠家推送。或者找一個靠譜的(免費的)第三發推送sdk。目前使用MobPush。 3、部分iOS裝置微信登入不了,Universal Link 或xcode配置問題,已解決。其實這應該不是Flutter的問題,主要是當時不熟悉iOS配置 4、iOS點選狀態列滾動到頂部和自定義滾動控制有衝突,已解決。配合extended_nested_scroll_view元件來自定義滾動就好 5、nested_scroll_view 元件的一些問題可以用extended_nested_scroll_view元件解決(我心目中的年度最佳元件extended_nested_scroll_view) 6、卡頓問題,卡頓問題不是Flutter才有的,原生App也會有,主要還是要找到問題針對性的優化。
Flutter開發App如何上架
基本和原生App一樣。反正就是打包成兩個安裝包的。安卓根據應用市場的要求申請軟著、加固好Apk就行了。App store 就要有開發者賬號、配置好許可權和許可權說明,不要獲取沒用的許可權,基本上第一次稽核過了,以後稽核按著規範都能很快的過審的。
反而是現在國內的安卓應用市場的要求越來越多。最近、App隱私問題鬧得沸沸揚揚,以後App上架需要做Icp備案了。
未來
相對其他開發平臺來說,Flutter對於我有種特殊的意義。因為,它讓我在離開發崗位2年多之後又能快速的找回合適的開發工作。我也看著它從開始的備受質疑到被越來越多的公司使用。所以,作為一個30+的猿,我希望能和Flutter走的更遠一點~
其實、現在學習一門新的語言成本真的不是很高。現在的開發語言在語法上基本上都差不多、所以無需猶豫用什麼語言或者平臺來做開發、而是要想想什麼技術比較適合自己。如果你想在移動端開發繼續走的更遠點,那麼為什麼不嘗試下跨平臺技術?說不定以後大前端會成為潮流?