一区二区三区欧美日韩-一区二区三区欧美-一区二区三区免费在线视频-一区二区三区免费在线观看-久久精品店-久久精品第一页

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

網站百科

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

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

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

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.junxiaosheng.cn/18383.html
相關APP開發
 八年  行業經驗

多一份參考,總有益處

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

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

業務熱線:余經理:13699882642

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

主站蜘蛛池模板: 午夜福利免费0948视频| 久久国产精品麻豆AV影视| H厨房灌草莓| 国精产品一区一区三区有| 99久久精品国产一区二区三区| 益日韩欧群交P片内射中文| 亚洲国产精品特色大片观看 | 99re久久这里只有精品| 羽月希被黑人吃奶dasd585| 一二三四在线观看韩国| 亚洲欧美国产视频| 亚洲精品日韩在线观看视频| 亚洲 日本 天堂 国产 在线| 小黄文纯肉污到你湿| 无人区大片中文字幕在线| 无码丰满人妻熟妇区| 无遮挡午夜男女XX00动态| 亚州免费一级毛片| 亚洲精品美女久久久久99| 亚洲精品久久久午夜麻豆| 亚洲人成在线播放网站岛国| 亚洲欧美一区二区三区九九九 | 免费观看成人毛片| 年轻的母亲4线在线观看完整| 男神插曲女生软件完整版| 欧美成 人 网 站 免费| 人人爽久久久噜噜噜丁香AV| 区久久AAA片69亚洲| 日日干夜夜艹| 亚州精品视频| 伊人久久综在合线亚洲| 13小箩利洗澡无码视频APP| 1819sextub欧美中国| 白丝萝莉喷水| 国产精品免费一区二区三区视频| 国产人妻XXXX精品HD电影| 精品国产5g影院天天爽| 六度影院最新| 日本熟妇乱妇熟色A片蜜桃亚洲| 色情内射少妇兽交| 亚洲精品无码不卡|