[Flutter][程式][長]
這是一篇我近期3個月實作Flutter後的心得感想。如果有人想說要不要花時間點開這個技能樹,卻又一直觀望是否值得(畢竟連程式排行榜前10名都看不到),我用C# Winform當個對比給你參考。
我從去年(2024)9月到12月因為3個需求開始習作Flutter,"設計美觀","寫一次Code可以在各平台使用(win/android/ios/web)","外掛支援完整"。
- 設計美觀
- 如果比較起我原本寫了好幾年的C# Winform的程式來說,Flutter根據 android 的框架或 ios 的框架來使用,美觀很多。圓角自動實作,文字各種調整。原生MENU物件你用不慣官方的,還能找個外掛的來用。只要你照他的框架(方式)來寫,你就能得到一個網路上常看到的專業DASHBOARD版面的APP或Gui介面。
- C#做不到渾然天成這件事,弄個圓角BUTTON,你要刻一下(原生物件沒這個屬性給你用),以Gui介面框架來說C#是個空白畫布,你是個畫師,你的美學和對物件重新硬刻的能力決定了你出來的圖形介面長怎樣,也就是什麼都不改的情況下你拉出來的介面就是灰灰醜醜的,像是20幾年前windows剛出來作業系統那時的一些程式一樣。
- 一切看來這麼美好,那還等什麼,說換就換。讓我們打掉以前的舊程式在這個完美語言重生吧,就在我這個憨人這麼想而開始進行的時候,做不出來哩(代誌不是親像憨人想的這麼簡單),計畫難以進行。原因很簡單,C# winform 改屬性和事件太方便,但Flutter你要全部自己構思,且要符合它的框架。(在目前這個懵懂略懂的階段我做不出來)
- 寫一次Code可以在各平台使用(android/ios/web)
- 剛開始的時候我興高采烈地想寫個原本在C# 做的modbus工控程式,然後以符合框架以及語言設計的方式去撰寫後,東西卻弄不出來。我發現某些在windows可以使用的通訊方式(RTU),你沒辦法在android/web上使用,為了達成你都想要用的方式,你要迂迴委曲求全繞好多路,達成這件事。(嗯? 我搞錯什麼?)
- Flutter原框架介面很漂亮,但是排版設計還是很吃自己藝術天分和美學,尤其你想在3個不同介面上使用,有小有大的螢幕表現方式,你要同時考慮和構思,在你的一次就想搞定的程式碼上,不太容易。(嗯? 我搞錯什麼??)
- 以往也有很多這類東西,像是大家熟悉的Java ,大家可能不熟悉的React native,XAMARIN,這類程序都標榜可以讓你開發寫一次就好,但因為流行度與支援度不高,你親自寫一兩個程式大概就能理解,它可能用在你的專案上很困難,你還是會回去走老路,回去棉被內不要探索冷颼颼新世界免得中風。
- 外掛支援完整
- 說完整真的也還蠻完整,只要你不要硬逼這個外掛全介面都要支援就好,它就是有的只支援windows,有的只支援android/ios,有的說支援web但是你寫了以後才發現哪裡有支援,發現這些你都不要太意外,那只是個改版就突然不支援的BUG...
- 要有包容和善變的心,寫這些外掛的人是好心分享,但哪知道Flutter改版升級以後,就跟android的壞習慣一樣廢棄一些函式導致你的程式不能使用,你明明想說可以省一些工夫,結果卻製造更多程式債,只因為創造語言的神明,在最新的神諭中告訴你那個函式不能用有漏洞危險我們現在不支援了...
- 安裝外掛的方式很簡單,你找到想使用的函示或外掛,會用命令列終端機就能裝了,這是我覺得一個很好的優勢,對於我是寫script語言起家的人,終端機命令安裝簡單就能一切搞定,不要裝東缺西最好了。雖然這一點C#在nuGet也有,但我比較起來是Flutter比較好用。
結論,如果你想嘗鮮,一個禮拜去玩玩或甚至使用ChatGpt去搞一個能動的程式碼來實作是非常好的體驗。你能夠大概知道她在幹嘛以及如果你想寫這種語言你要怎麼寫。但如果某些工控需求或是網頁需求,你要有覺悟這條路走下去你要累積超多這語言的知識以及排除狀況的能力。尤其你如果是想寫GUI圖形介面給客戶或自家員工使用的情況下,這個真的是必須要自己在心中或圖面上打草稿再去想辦法實作的語言,因為它沒有所見即所得的方便IDE設計,網路上那個FLUTTER FLOW要錢的,看起來也不好用,若有閒錢和時間可以去玩看看。