鉴于 PageView 允许使用 viewPortFraction 显示下一个或上一个项目,如果用户点击其中一个项目,我们如何在项目之间滚动?如果用户用手指拖动列表,则滚动有效,但我也想启用 onTap。
child: PageView(
children: <Widget>[
...widgetsList,
],
scrollDirection: Axis.horizontal,
controller: PageController(
viewportFraction: 0.4,
initialPage: 0,
)),
您可以将每个页面包装在 a 中GestureDetector
并onTap
使用jumpToPage
或animateToPage
来切换页面。如果每个页面上的元素由于 无法再访问GestureDetector
,则可能需要使用Stack
小部件。
只需将当前pageNo传递给animateToPage
.
这是一个带有包装的示例Container
,但您也可以将完整的 Page 作为孩子传递。
GestureDetector(
child: Container(
width: double.infinity,
height: 50.0,
color: Colors.white60,
child: Text('show')),
onTap: () {
_pageController.animateToPage(pageNo,
duration: Duration(milliseconds: 250), curve: Curves.easeInOut);
//// some alternative navigation:
// _pageController.nextPage(
// duration: Duration(milliseconds: 250),
// curve: Curves.easeOut);
//
//// alternative just jump
// _pageController.jumpToPage(pageNo);
},)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句