颤动水平滚动一项一项
Posted
技术标签:
【中文标题】颤动水平滚动一项一项【英文标题】:Flutter horizontal scroll one item at one 【发布时间】:2020-06-18 19:26:58 【问题描述】:免责声明:- Flutter 社区的新功能
在原生 android 代码中,我使用手势检测器完成了类似的工作,但我想知道如何在颤振中也实现相同的效果。就像我在水平列表中有卡片列表,当用户滚动列表时,一次只能滚动一项。任何实现这一目标的想法或建议将不胜感激。
【问题讨论】:
您可以使用 PageControl 来实现。 【参考方案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),
);
【讨论】:
【参考方案2】:您可能想查看flutter_swiper 插件。
【讨论】:
【参考方案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
],
)
【讨论】:
以上是关于颤动水平滚动一项一项的主要内容,如果未能解决你的问题,请参考以下文章
C# WPF:在高度属性设置为“自动”的 ListView 中防止水平滚动条覆盖最后一项