iT邦幫忙

鐵人檔案

第 12 屆 iThome 鐵人賽
回列表
Mobile Development

Why Flutter why? 從表層到底層,從如何到為何。 系列

Flutter這一年來也開始在台灣逐漸熱門起來了,中文的各種教學資源也越來越豐富,但就我所見大多數的文章,大部分的篇幅還是集中在表層的各種Widget, Library如何使用上,比較少觸碰到框架內部如Render Tree, Flutter Engine,或是有各種狀態管理如何使用的文章,但比較少解釋到底為什麼要這樣設計?要解決什麼問題?總之這系列計畫是寫給已經有接觸過Flutter,但想要瞭解的更深入,更清楚自己到底在做什麼的人。至於完全沒接觸過Flutter的人,雖然這系列不會手把手教你如何寫Flutter,但如果你在學習過程中遇到一些不知道為什麼要這樣做的時刻,也許你能在這裡找到答案。

鐵人鍊成 | 共 30 篇文章 | 48 人訂閱 訂閱系列文 RSS系列文
DAY 11

days[10] = "Plugin是怎麼運作的?"

大家在開發Flutter的時候應該免不了會使用到Plugin吧,或許你也已經熟悉幫助Plugin實現原生溝通的Platform Channel,甚至可能你自己就...

2020-09-11 ‧ 由 Joshua 分享
DAY 12

days[11] = "為什麼要有key?"

我覺得key是一個蠻奇妙的東西。它是Widget(base class)——整個Flutter中最重要的class——唯一的一個參數,但它的應用場景卻實在不是那...

2020-09-12 ‧ 由 Joshua 分享
DAY 13

days[12] = "key是如何影響updateChildren的?"

updateChildren將會是我們目前看過最複雜的函數,不論是國內外都找不到深入剖析它的文件。所以趕快來成為全世界少數真正瞭解它的運作方式的人吧!誰知道呢?...

2020-09-13 ‧ 由 Joshua 分享
DAY 14

days[13] = "IntelliJ/AS做得比VSCode好的幾件事"

老實說這系列真的是寫到心很累,總之今天大家就稍微輕鬆一點,來戰個IDE吧。 最近因為工作的關係,一下寫web(WebStorm)一下寫backend(Intel...

2020-09-14 ‧ 由 Joshua 分享
DAY 15

days[14] = "想瞭解Hot Reload如何運作,就自己來實作!"

對,我說真的,今天的內容其實沒有很難。我們只需要稍微把Dart VM叫出來溝通一下,全部程式碼頂多30行,也沒有什麼複雜難理解的邏輯。最重要的是這很有趣,一起來...

2020-09-15 ‧ 由 Joshua 分享
DAY 16

days[15] = "為什麼你應該使用StatelessWidget而非Functional Widget?"

相信大家應該都遇過這種狀況: Column( children: [ Text("FOO", style: Te...

2020-09-16 ‧ 由 Joshua 分享
DAY 17

days[16] = "為什麼你應該嘗試從Provider升級到Riverpod?(上)"

因為Riverpod是由Provider的作者Rémi Rousselet重新打造的Provider威力加強版。好講完了,可以收工了。什麼?又不到300字?好吧...

2020-09-17 ‧ 由 Joshua 分享
DAY 18

days[17] = "為什麼你應該嘗試從Provider升級到Riverpod?(下)"

讓我們從複習一下InheritedWidget開始,這是我能做到的最簡單的InheritedWidget範例。可以看到,除了我們必須改為繼承長得跟Statele...

2020-09-18 ‧ 由 Joshua 分享
DAY 19

days[18] = "Isolate是怎麼運作的?"

很久很久以前,我還在寫Android的時候,要做異步處理有很多選擇。從早期的AsyncTask,中期的Rx,到後來的Coroutine,不只是異步處理的語法越來...

2020-09-19 ‧ 由 Joshua 分享
DAY 20

days[19] = "Event Loop是怎麼運作的?"

我們在昨天的文章裡提到,每一個Isolate只會有單一執行緒,而我們在這個執行緒上所有的異步處理,都是靠Event Loop機制來完成的。今天我們就繼續來看看這...

2020-09-20 ‧ 由 Joshua 分享