我想在用户拖动时垂直转换小部件。我尝试使用两个选项来实现它:
因此,当我使用动画控制器时,滚动不是很平滑,并且即使动画的持续时间为1毫秒,在延迟后仍会滚动小部件。
当我使用值通知程序实现它时,效果要好得多,但仍不如ListView滚动平滑。有没有更好的方法来在用户拖动时滚动\翻译小部件?
答案 0 :(得分:0)
我为此找到了更好的解决方案。尽管可以使用手势检测器来实现,但这并不是那么平滑。 Flutter为此提供了另一个很棒的小部件,它是 DraggableScrollableSheet 。
如果您想要一个可滚动列表的容器,该列表可通过调整可滚动对象的大小直到达到限制来响应拖动手势,然后滚动该控件即可。
DraggableScrollableSheet(
initialChildSize: .70,
minChildSize: .70,
builder: (BuildContext context, ScrollController scrollcontroller){
scrollcontroller.addListener((){
});
return Container(
child: ListView.builder(
controller: scrollcontroller,
itemCount: widget.songs.length,
itemBuilder: (BuildContext context, int index) {
return buildSongRow(widget.songs[index]);
})
);
})
上面的列表最初将放置在屏幕高度的70%处。向上滚动时,它将列表向上拖动到顶部,然后列表作为普通列表视图滚动。滚动时到达顶部时,列表将向下拖动到初始位置(高度的70%)。