【问题标题】:Flutter horizontal scroll one item at one颤动水平滚动一项一项
【发布时间】:2020-06-18 19:26:58
【问题描述】:
免责声明:- Flutter 社区的新功能
在原生 android 代码中,我使用手势检测器完成了类似的工作,但我想知道如何在颤振中也实现相同的效果。就像我在水平列表中有卡片列表,当用户滚动列表时,一次只能滚动一项。任何实现这一目标的想法或建议将不胜感激。
【问题讨论】:
标签:
flutter
dart
horizontal-scrolling
【解决方案1】:
我建议你查看PageView。
有了这个,您可以将卡片列表转换为 PageView 的子项,它可以让您一次滑动一页。它看起来像这样:
final controller = PageController(
initialPage: 0,
);
final pageView = PageView(
controller: controller,
scrollDirection: Axis.horizontal,
children: <Widget>[
// your card list here
],
onPageChanged: (index) =>
setState(() => selectedPageIndex = index),
);
【解决方案3】:
我通过scroll_snap_list 包实现了这一点。您需要设置一个固定的项目大小,并根据该固定大小进行滚动。
ScrollSnapList(
selectedItemAnchor: SelectedItemAnchor.START,
itemSize: 163,
onItemFocus: (index) {},
duration: 300,
scrollDirection: Axis.horizontal,
itemCount: 10,
itemBuilder: (BuildContext context, int index) {
return Container(
width: 155,
height:155,
);
},
),
【解决方案4】:
您可以使用带有属性的简单 ListView Widget:physics: PageScrollPhysics()
ListView(
physics: PageScrollPhysics(),
children: [
//Your list elements here
],
)