我想在用户拖动时垂直翻译一个小部件。我尝试使用两个选项来实现它:
因此,当我使用动画控制器时,滚动不是很平滑,小部件在延迟后仍在滚动,即使动画持续时间为1毫秒。
当我使用值通知器实现它时,它要好得多,但仍然不如ListView滚动。是否有更好的方法在用户拖动时滚动\翻译一个小部件?
发布于 2019-06-07 16:54:22
我找到了更好的解决办法。虽然可以用手势检测器来实现,但那并不是那么平滑。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%的高度)。
https://stackoverflow.com/questions/56482937
复制相似问题