Flutter Widget of the Week -2

Mark.Hsu
馬克學習筆記
Published in
Mar 19, 2021

#13~#15

13. FadeInImage

等待下載圖片的時候, 先放一張圖片, 避免畫面空白.

14. StreamBuilder

StreamBuilder會觀察透過StreamControll發送的資料, 接受到資料後會建立自己的內容.

透過程式可以看到StreamBuilder接受兩個參數:

  • Stream:表示監聽的Stream, 一個StreamBuilder監聽一個Stream, 一個Stream可以被多個Widget監聽.
  • Builder:傳入我們要建立的contentWidget

Widget的構建完全由Stream觸發, 不需要透過setState, 完全由數據驅動.

使用:

  • 創建StreamController
  • 獲取StreamSink當作事件入口
  • 獲取Stream對象用於監聽
  • 事件訂閱對象StreamSubscription

15. InheritedModel

  • 為了讓子組件可以獲取父組件的數據, 達到共用資料的功能.
  • InheritedWidget組件的所有子組件, 都可以透過BuildContext.dependOnInheritedWidgetOfExactType()來舉得資料.

這個章節卡了很久, 有點迷糊了, 但發現一個解釋得比好懂的資料:

這個是Hiskio上面Hans老師的範例

感覺使用的步驟是:

  • 建立一個extend InheritedModel的 class
  • 裡面要建立一個靜態的類別, 透過of來取得資料

--

--