這個組件經(jīng)常用到,而我在項目中用到最典型的是結(jié)合bottomNavigationBar 實現(xiàn)iOS的TabbarController的功能。
這篇文章我僅僅做一下pageview功能的簡單實現(xiàn),代碼如下:
Container(
height: 200,
child: PageView(
children: <Widget>[
Container(
color: Colors.red,
),
Container(
color: Colors.blue
)
],
),
)
效果如下:

PageView的屬性還有scrollDirection、reverse、controller、physics、pageSnapping、dragStartBehavior和allowImplicitScrolling。
scrollDirection主要是滾動的方向即horizontal(水平)和vertical(垂直)兩個,默認(rèn)是horizontal的
reverse這個就是規(guī)定了children(子節(jié)點)的排序是否是倒序,默認(rèn)false。這個參數(shù)在ListView也有,一般在做IM工具聊天內(nèi)容用ListView展示時需要倒序展示的。
controller可以傳入一個PageController的實例進去,可以更好的控制PageView的各種動作,可以設(shè)置:
- 初始頁面(initialPage)、
- 是否保存PageView狀態(tài)(keepPage)
- 每一個PageView子節(jié)點的內(nèi)容占改視圖的比例(viewportFraction)
- 直接調(diào)轉(zhuǎn)到指定的PageView的子節(jié)點的方法(jumpToPage
- 動畫(平滑移動)到指定的PageView的子節(jié)點的方法(animateToPage)
- 到下一個PageView的子節(jié)點的方法(nextPage)
- 到上一個PageView的子節(jié)點的方法(previousPage)
從以上可以看出基本是普通輪播圖組件的API
physics就是設(shè)置滑動效果:
- NeverScrollablePhysics表示設(shè)置的不可滾動
- BouncingScrollPhysics表示滾動到底了會有彈回的效果,就是iOS的默認(rèn)交互
- ClampingScrollPhysics表示滾動到底了就給一個效果,就是Android的默認(rèn)交互
- FixedExtentScrollPhysics就是ios經(jīng)典選擇時間組件UIDatePicker那種交互。
pageSnapping就是設(shè)置是不是整頁滾動,默認(rèn)是true.
dragStartBehavior這個屬性是設(shè)置認(rèn)定開始拖動行為的方式,可以選擇的是down和start兩個,默認(rèn)是start. down是第一個手指按下認(rèn)定拖動開始,start是手指拖動才算開始。
allowImplicitScrolling這個屬性一般提供給視障人士使用的,默認(rèn)是fasle
這個系列的文章是根據(jù)flutter 的 Widget of the week來做的,歡迎大家斧正。