效果圖
需求(有點奇怪)
- 第一格widget 拉到頂部時,header 向上消失
- 向下拉時顯示header
曾經嘗試使用SliverAppBar
, 但好像不能完全滿足以上兩個需求
所以最後嘗試使用ScrollController
+SingleChildScrollView
+Stack
+AnimatedPositioned
Stack
裡總共有兩層
- 扮演Appbar的Container
- 空白SizedBox + 一個Placeholder的List
- 用AnimatedPositioned包住Container, 改變位置時自動有收起的動畫
- 空白SizedBox時用來抵消Container的高度,讓Placeholder不會被Container擋住
ScrollController
會監聽 SingleChildScrollView
srcoll的高度,如果超過100 代表第一格widget( Placeholder) 已拉到頂部, 根據需求一 令到Header消失. 根據需求二, 當srcoll的方向是向下拉時顯示Header.
代碼如下: