人人做人人干-人人做人人看-人人做人人爽国产视-人人做人人爽人人爱-色屋视频-色屋网

歡迎您光臨深圳塔燈網絡科技有限公司!
電話圖標 余先生:13699882642

網站百科

為您解碼網站建設的點點滴滴

何時可以轉型?——Flutter開發實踐

發表日期:2018-12 文章編輯:小燈 瀏覽次數:4810

Flutter前段時間終于出了1.0,是時候親手實踐一把了。

實踐之前先了解一下前人的智慧,發現一篇文章:

我花了 8 小時,"掌握"了一下 Flutter | Flutter 中文站上線

https://www.jianshu.com/p/9aaabc60d8af

這文章比較有意思,可能就是Flutter 中文站的人寫的,非常有用,當然文章里的寫的8小時我感覺快了點兒,搗鼓一遍肯定不夠的,搞不好install都要好久。下載完flutter sdk和plugin之后要flutter doctor -v檢查開發環境,結論一般都是:Doctor found issues in X categories,會給出相應的tip,一個一個照做就行了,實踐發現這些issues不需要全部處理,例只做android的話,ios的 toolchain可以忽略,“Android license status unknown”的提示特別愁人,不過stackoverflow都有解決方法,我一開始兢兢業業地照做了,第二天手殘更新了一下android studio,結果“Android license status unknown”的提示又出來了,不過我發現編譯打包都沒問題,就不管了。

Flutter和javascript、react有點像,沒有handler了,不需要自己切換線程;Flutter加載圖片使用的是graphic memory,不用擔心oom的問題,這些優點都挺省心的。Dart和swift語法也特別像,我開玩笑說,不管誰看到Dart都會覺得和某種語言有點像。。面向對象與響應式編程相結合的語言基本都長這樣了。

純java程序員剛上手可Flutter能會不太適應。Dart的嵌套真不是一般的深,更搞笑的是Flutter插件會幫我們在嵌套的一個個括號后面添加注釋:

這個注釋與前面的new配對的,刪不掉也無法選中,顯然Google也擔心我們代碼層級太多,看不下去了。不知道這種注釋能不能自定義,不美觀。

Flutter里一切都是Widget,以前看到這個描述沒啥感覺。寫一遍代碼就特別容易理解了,果然一切都是,布局、控件就不用說了,連實現padding、margin、居中這些屬性都是由一個個Widget來實現的。這么做的好處是邏輯簡單,學習上手快,一個概念理解了就能吃遍天,Flutter繪制界面也方便,只需要一次深搜就可以算出控件的位置了;壞處是顯然易見的,看上面的層級,我這個是少的,大家開發時看看Flutter Outline里面的Widget樹吧,一不小心能嵌套十幾層。。我們實際開發時一定要想辦法減少Widget層級,比如多提取方法,自己封裝widget等。Android自定義View多用繼承,Flutter自定義Widget是通過組合多個Widget來實現的。Flutter官方已經提供了許多Widget了,但我估計不久以后,Flutter的各種開發庫會爆發式增長,浩如煙海,各公司甚至各項目組都會定義各自的UI庫,研發管理需要注意。

Flutter開發不需要寫android的layout了,全部通過代碼實現,這意味著業務代碼很容易與UI代碼混成一坨,Flutter官方說選Dart的原因之一就是在代碼規模變大后依然能保持可讀性,我對這話不是很理解,可能我沒有好好看Dart文檔吧。如何把代碼寫得清晰可讀還是值得推敲一下的,我覺得項目組轉型Flutter之前一要先定好代碼風格,千萬不能隨便發揮。

轉型Flutter還有個要注意的地方,與原生Android不同,Flutter不可以隨意增刪控件,Flutter界面是逐幀繪制。Flutter非常重視Widget的狀態,如果界面是動態變換的,那么Widget在定義的時候就要知道自己有哪些狀態。官方給了個網絡請求的例子,發起網絡請求之前彈出progress,請求結束后關閉progress顯示列表,很簡單的功能,官方給的方案是通過全局變量來判斷界面狀態,如果當前正在請求網絡,那么new progessDialog,http請求結束置全局變量,然后setState重繪界面,new ListView:

這種實現方式真是讓人不舒服,我覺得會破壞代碼結構,你想假如原來沒有顯示progress,只做了列表,這個時候測試提個bug說http請求時間太長,一定要加progress,這個時候再改代碼真是要改得懷疑人生了。所以一定要做好封裝,減少耦合,官法沒有提供優雅的實現,那么我們得自己定義一個通用的Widget來切換控件的隱藏和顯示。就這么一個簡單的功能,想寫好都要費一下勁,所以說,開發Flutter項目也不見得有多輕松,一大堆公用Widget等著去實現呢。

1.0正式版出來了,基于Flutter全新開發android app應該問題不大了。但是很多愿意轉型的項目應該更希望能把Flutter嵌入到原生項目里,官方github已經有example了,clone下來跑起來看了還蠻震驚的,用FlutterView把flutter嵌到android原生界面里,做到了flutter與原生android互交互,渾然天成,簡直太完美了!把Flutter添加到原生android流程不復雜,先建個Flutter module,再引入即可。于是忍不住往自己的項目里加,結果發現處處是大坑。首先,要知道絕大多數android項目只要有點規模,依賴包就已經很多了,build.gradle里面有各種配置,完整clean build一遍一分鐘內能完成就不錯了,這下要再implementation一個flutter,唉真是慢,誰用誰知道。我以前做swift開發吐槽xcode升級前后不兼容,其實android studio也是半斤八兩,我昨天手殘android studio從3.1.3升級到3.2.1,結果Flutter工程就真的認不出來了,非得升級一下Flutter plugin才好使了。另外,Android、Flutter混合開發最最麻煩的事是,嵌到android界面里的flutter不可以與android一起debug,開發的時候要開兩個android studio,各自調各自的,于是果斷放手。總得來說,老項目要轉型Flutter還是整體重構比較靠譜。


本頁內容由塔燈網絡科技有限公司通過網絡收集編輯所得,所有資料僅供用戶學習參考,本站不擁有所有權,如您認為本網頁中由涉嫌抄襲的內容,請及時與我們聯系,并提供相關證據,工作人員會在5工作日內聯系您,一經查實,本站立刻刪除侵權內容。本文鏈接:http://www.kwpm.com.cn/18383.html
相關APP開發
 八年  行業經驗

多一份參考,總有益處

聯系深圳網站公司塔燈網絡,免費獲得網站建設方案及報價

咨詢相關問題或預約面談,可以通過以下方式與我們聯系

業務熱線:余經理:13699882642

Copyright ? 2013-2018 Tadeng NetWork Technology Co., LTD. All Rights Reserved.    

主站蜘蛛池模板: 久久精品网站免费观看 | 免费在线色视频 | 亚洲国产欧美日韩第一香蕉 | 动漫美女无遮挡 | 99久久999久久久综合精品涩 | 久青草国产在视频在线观看 | 爆操波多野结衣 | 日韩午夜免费视频 | 亚洲三级视频在线 | 天堂网在线看 | 毛片大全免费 | 成年人小视频在线观看 | 成年人影院在线观看 | 国外欧美一区另类中文字幕 | 国产亚洲精品日韩香蕉网 | 日本一区二区不卡视频 | 激情免费视频 | 欧美日韩中文字幕在线 | 日韩一区二区三区中文字幕 | 日本一区二区三区中文字幕视频 | 边做边叫床的大尺度床戏欧美 | 日本三级做a全过程在线观看 | 114级毛片免费观看 1204国产成人精品视频 | 国产一卡2卡3卡四卡精品网 | 国产丶欧美丶日韩丶不卡影视 | 色综合天天综合 | 精品毛片视频 | 国产精品免费大片一区二区 | 97免费在线观看视频 | 免费看黄网页 | 污网站免费在线观看 | 日本高清三区 | 国产日韩网站 | 欧美黄区 | 日本全黄三级在线观看 | 国产精品自拍一区 | 午夜影视在线 | 国内精品久久久久久久影视麻豆 | 成人网在线免费观看 | 最近中文字幕国语免费高清6 | 夜色在线影院 |