#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來取得資料