首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在用户拖动时实现垂直转换小部件的有效方法

在用户拖动时实现垂直转换小部件的有效方法
EN

Stack Overflow用户
提问于 2019-06-06 18:07:57
回答 1查看 420关注 0票数 0

我想在用户拖动时垂直翻译一个小部件。我尝试使用两个选项来实现它:

  1. AnimationController
  2. 值通知器

因此,当我使用动画控制器时,滚动不是很平滑,小部件在延迟后仍在滚动,即使动画持续时间为1毫秒。

当我使用值通知器实现它时,它要好得多,但仍然不如ListView滚动。是否有更好的方法在用户拖动时滚动\翻译一个小部件?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-07 16:54:22

我找到了更好的解决办法。虽然可以用手势检测器来实现,但那并不是那么平滑。Flutter还有另一个很棒的小部件,那就是DraggableScrollableSheet.。

如果您想要一个可滚动列表的容器,该列表通过调整可滚动的大小来响应拖动手势,直到达到极限,然后滚动这是您应该使用的小部件。

代码语言:javascript
复制
 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%的高度)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56482937

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档