Flutter七日總結

多看星空方知何謂眇小,多看細胞方知何謂浩大,我是巨人,也是沙粒,崇高並謙卑着----張風捷特烈


寫這個系列主要是出於如下目的:
1.給本身一個挑戰,並附加時間限制
2.一直想要表達一下:遇到新技術時的態度,藉此分析一下我對於一件新事物認知的過程  
3.Flutter對於Android開發者,確實須要去稍微瞭解一下 
4.做爲一個地道的javaer+Androider,但願能夠爲想入坑Flutter的朋友鋪條小路  
5.整個7篇文章貫穿着我學習的心+思,基本上敲一段測試代碼,寫一段文章。對個人學習方式也是一種記錄與沉澱
複製代碼

七篇文章以下:

下面是一邊學習一邊畫出來的widget樹

雖然離完整版還差一大半,不過入門仍是夠用了,經常使用的基本涉及
當你這些用熟練了,其餘控件看看屬性也就無師自通了(推薦看原圖,比較清楚)css

widget樹

第一天及體悟:
Flutter的環境搭建並沒走多少彎路,網上教程一大堆。  
新建了一個工程,發現代碼有點不對勁,雖然知道Flutter是跨平臺框架,  
可是代碼在哪寫?不該該有個單獨的src嗎?之前玩過libgdx,認爲應該差很少  
而後全文搜索一下界面上的字,找到在lib包的main.dart裏
複製代碼

我要在lib裏寫代碼?不會這麼奇葩吧?而後我用面向對象的天眼看了一下main.dart
正如第一篇的分析,果真這麼奇葩。並且語法與Java,c++,Python,Js都不同, 
好吧,又要學方言了,自從JS的Es6玩轉了之後,我就不怕語言了,
Kotlin也好,Python也好,這些性格"不羈"一些的和ES6都八九不離十  
只要語法通了,以後就是我的能力的問題了,因此Dart入門很快,半天就基本掌握了
想要熟練,那還必須去實際操練才行
複製代碼

[番外]:分享一些心情-------------
我常常把編程當作鍛劍,我一直在精煉Java這把劍,用Android這把劍鞘盛放  
Python也好,C++也好,Js也好我只是玩玩,都被我當作光環對Java之劍進行附加
至今在Android中我遇三次瓶頸期,我選擇暫時離開Android,去拓展一下視野,
死磕已經做用不大了,記得第二次瓶頸是被網絡束縛地沒法前進一步,
因而一咬牙,暫停安卓,去專門找後端的書和資料去看,也所以萌生了搭建本身網站的念頭  
而後先後並行,兩大光環加持,也上線了個人我的網站,兩端的基礎知識已基本在心中。
複製代碼

因爲我的網站的搭建,我對服務端有了些認識,網絡請求與上傳下載也都知道是怎麼回事  
也有了測試的渠道,若是一個對先後端絕不知情的Androider,確定會卡網絡瓶頸上
數據流的概念初步造成,在個人眼中,界面的展現、上傳下載、網絡上的一切都是字節的流動  
而後重歸Android之時,先後端已經像一條線貫穿了,Android順利和服務器交互時,第二瓶頸已過
有種"斷劍重鑄之日,騎士歸來之時的感受",具體細節,打算寫個2018年終總結來記錄一下
複製代碼
[番外]:截止-------------
如何很快地接收一件新事物(新知識)? 用你最擅長的技術去對接新知識,
好比你是個天文迷,若是你想學英語,去看天文方面的讀物會更有利,
由於你有這方面的知識儲備,即便知識儲備是中文又如何?難道英文的地球能出太陽系?
語言和知識本就是兩碼事,語言表述知識並不會更改知識自己。
因此知識對接上,兩種語言之間的交錯,會讓你更快接受語言的自己,也能強化知識
複製代碼

因此我並無一開始就上控件,而是基於我最熟悉的Canvas來繪圖,熟悉Dart語法,不然後面工做很差開展,
在Android中Canvas的豐富知識儲備讓我很好的與Flutter中的Canvas對接,這一棋自認爲不錯
對接以後,之前畫網格,座標系,n角星的東西又能拿出來秀了,舊知識轉化成新知識
經過Java代碼更改爲Dart代碼,也讓我更清楚了二者的異同點,之後把握起來就輕鬆寫  
複製代碼

總的來講第一天仍是蠻輕鬆好玩的。html


次日及體悟:
次日能夠說是兵行險招,本打算把基礎控件說一下的(依稀聽過Flutter的控件超級多) 
但第一天圖畫好以後,很是想玩動畫,若是放在後面,感受不連貫  
然而並無把握把動畫寫好,畢竟才更接觸一天而已。挑戰一下唄,而後就玩動畫了
複製代碼
次日能夠說是這七天裏我感受最成功的,動畫+粒子運動全都復刻到Flutter上了
粒子時鐘完成後,挺激動的,而後就拿去分(xian)享(bai),心想,Flutter仍是不錯的嘛  
這絕對是Flutter的第一個粒子時鐘(除了我,也許沒有人會這麼無聊作這種特效)
複製代碼
看上去次日的文章好像一鼓作氣,其實也遇到了些阻礙,
dart的時間處理和三維數組和Java有些出入,還有就是時鐘的粒子運動,
差一點就放棄了,由於效果老是出不來。心想,搞出個時鐘就算了吧,不也挺好嘛。
但是真的很不甘心,都到這步了。而後輸出小球集合的個數、第一個小球的位置,
數據好好的啊,可爲何出不來效果……最後發現小球半徑沒有設置……出來纔有鬼呢
複製代碼
有人問我有沒有什麼心得,心得這東西說出來都懂,作起來卻不簡單,
若是你以爲一我的的學習方式很好,你應該去觀察他,而後取長補短。
每一個人的境遇都是不一樣的,別人的學習方法不必定適合你,你沒有必要和別人同樣。
好比我大學喜歡寫詩,而後通讀各大名著,不斷思考世界,若是你沒有這些基礎,
個人心得就不必定適合你。每一個人的價值觀也是不一樣的,我是更傾向提高自我境界的那種人,
物質並很少求。心得這東西,別人的都是廢話,須要的話,網上雞湯本身挑,
通常人豪言壯語,大多隻是自欺欺人。最近看到八個字挺實在:"生死看淡,不服就幹"複製代碼

總的來講次日收穫頗豐。前端


第3、四天及體悟:
第三天基礎控件,感受應該很枯燥,因此我儘量讓它變得有趣
我喜歡畫體系的樹狀圖,由於這樣看起來很清晰,也助於整理思路
我喜歡卡片,源於遊戲王,對於繁多的事物,感受用卡片記錄一下比較有趣
複製代碼

第三天源碼翻得比較多,基本上是進去看控件屬性,代碼測試
經過Android和html+css的佈局經驗,基本上套路都是那回事
並且Flutter的Flex佈局和css的flex佈局不謀而合,因此入手容易不少
遇到margin的時候,有點感觸,寫了點看到新東西的態度:

新事物每每都與舊事物有聯繫,學習新事物最好快速找到它與你知識庫中舊事物的聯繫,
聯繫的多少取決於你知識庫中內容的多少,鏈接得越多,你會越快或越能掌握舊事物 
複製代碼

本覺得第四天能夠把剩餘的控件講完,再寫幾個小案例呢,萬萬沒想到:
Flutter的佈局如此之多,再加上卡了一點小殼,只勉強把控件告終(實際上還有不少未涉及)
Flutter裏面29種疊合模式也是嚇到我了,也藉此分析了一下這種多狀況的分析方式
第三天把個人激情燃燒殆盡,第四天,三個控件一組,一共六組18張,沒那麼多花哨
最後將Flex佈局詳細說明了一下
複製代碼

這兩天難度不是很大,就是有點麻煩,畫圖,配卡什麼的,
只是敲代碼的估計一天就夠了,不過那樣會及其無聊,不是我想要的
第四天寫到最後其實仍是有很多控件沒涉及到呢,但感受也就那回事
認識一個控件可就那點套路,屬性基本上也就那些,遇到新的看看也就明白了
沒有必要所有列出來,這就是"魚與漁"的區別吧,魚是抓不完的,你也放不下
複製代碼

兩條源碼翻得比較勤,有點小感悟:

有問題就去解決,即便牽涉出十個新問題,你就想象成問題棧,
有問題就進棧,解決了就出棧,這樣不會亂,你可見的就是棧頂而已,
一個一個來,這樣會相對於11個問題擺在你面前更容易接受。
至於何時stackover(棧溢出)就看你的決心和耐力了。
固然新手感受hold不住時,能夠深呼吸,咬一下牙堅持一下。
仍是不行的話,記錄下問題,果斷退出。也許你如今等級不夠,
這個boss你打不過,那就去刷怪升級吧。短劍重鑄之日,騎士歸來之時。
如今回頭來看之前困擾個人問題,其實也並無什麼,這樣你才能感受成長
複製代碼

總的來講第3、四天挺苦悶,但也是必經之路java


第5、6、七天及體悟:
通過前四天,基本上語法、控件也就熟悉了,接下來統一說一下:
第五天能夠說很是有料,網上不多有詳細分析Flutter怎麼佈局的
中文網的例子有點小複雜,我打算按部就班地由簡到難進行陳述
首先是最簡單的條目入手一步步遞進成掘金的條目,
交互操做看似不少,其實經常使用的也就那幾個,操做也是widget這點很是有趣

複製代碼
第六天Dart的io,以及網絡和json的處理,這是一門語言的基礎
Java和Python還有node的io有所接觸,因此dart這方面並不麻煩  
但一在Flutter上,路徑很差拿,背景是跨平臺,還好有三根救命稻草:`path_provider`
而後是權限問題,固然也有相應的依賴庫`simple_permissions`,
網絡庫用起來比較簡單,基本上和前端的網絡庫操做一致
複製代碼
第七天是前六天的知識整合,並掃一下其餘小的知識點
Flutter與安卓的原生交互讓我感受它仍是蠻好的,雖然有點麻煩
不過要跨平臺,只與Android交互只是有半壁江山,ios那塊就很差辦了
雖然說Flutter能夠跨平臺,但若是要玩得轉,須要一我的兼具Android和ios
這樣算來,這個跨平臺代價仍是有的,你也許會說,有插件包啊
可是插件包只能解決一部分問題,各類業務千差萬別,若是隻靠插件包,有點牽強
畢竟有些邏輯上的小修小補,具體問題框架無能爲力,只能"湊合用"
Flutter是一個很好的UI框架,但可操做性,略有不足
複製代碼

結束語
React玩的好的人入手Flutter能夠說會輕鬆不少,由於思想很是類似
任何人都會有不足,不可能對這個世界全識全知,也就是"術業有專攻"
但並不意味這要閉關鎖國,排斥外物。程序員讀讀詩,看看史也沒有什麼不可
多看星空方知何謂眇小,多看細胞方知何謂浩大,你是巨人也是沙,崇高並謙卑着
程序源於對這個世界的認知,何爲境界,你眼中所視之物,究竟爲什麼? 
學無止境,不要飄,腳踏實地,一步一印,異曲同工,新即遠方,思之將至。
複製代碼

最後插播一段感悟:我常常思考工具與使用者間的關係:
`用工具`和`會用工具`之差別:[良庖歲更刀,割也;族庖月更刀,折也],
工具的使用方法體現了一位`工匠`的技藝  

《庖丁解牛》是我最喜歡的一篇古文,如何在作任何事上:
[以無厚入有間,恢恢乎其於遊刃必有餘地矣]是個人思考  

文中的八字成爲我接觸新事物的律典:[依乎天理,因其當然]。
通其理,方用之,是`匠者`與`匠師`的差別   

若是你不懂牛的構造原理,拿一把屠刀當然可殺牛取肉,
但庖丁的[以神遇而不以目視,官知止而神欲行]  
[提刀而立,爲之四顧,爲之躊躇滿志,善刀而藏之]感受也就與你無緣,
而這是一位匠者的自豪。 

寫一個程序就像打造一件藝術品,製造的過程即是`解牛`,
IDE、API、運行環境就是我手中的劍  

普通屠夫遇牛則斬,好肉壞肉在一塊兒切,煮成一大雜燴。
庖丁的匠心獨運是我追求的境界:  
[吾生也有涯,而知也無涯,以有涯隨無涯] 願君且行且珍惜。
複製代碼
相關文章
相關標籤/搜索