如何检测用户是不是开始垂直滚动 Listview.builder?

Posted

技术标签:

【中文标题】如何检测用户是不是开始垂直滚动 Listview.builder?【英文标题】:How to detect if the user started scrolling the Listview.builder vertically?如何检测用户是否开始垂直滚动 Listview.builder? 【发布时间】:2020-01-10 11:05:54 【问题描述】:

如果用户开始滚动,我会尝试隐藏一个容器,以便为列表视图提供更多空间和可见性。我尝试将 Gesturedetector 作为 Listview.builer 的父级并使用它的“onVerticalDragStart”,但没有运气。我是flutter的初学者,希望你能帮助我。谢谢!

【问题讨论】:

要检测仅滚动开始,您可以检查NotificationListener。 Check this if it helps 【参考方案1】:

您可以使用ScrollController,但@Sp4Rx 提出了更好的解决方案:NotificationListener<ScrollNotification>

您只需将ListView.builder 包装在具有泛型类型ScrollNotificationNotificationListener 中即可处理通过滚动ListView 发送的ScrollNotifications:

NotificationListener<ScrollNotification>(
  onNotification: (ScrollNotification notification) 
    if (notification is ScrollStartNotification) 
      // Handle your desired action on scroll start here.
    

    // Returning null (or false) to
    // "allow the notification to continue to be dispatched to further ancestors".
    return null;
  ,
  child: ListView.builder(...),
)

您可以查看ScrollStartNotification here 的文档。

【讨论】:

谢谢!我已经阅读了文档并最终了解了它的用途。谢谢!

以上是关于如何检测用户是不是开始垂直滚动 Listview.builder?的主要内容,如果未能解决你的问题,请参考以下文章

VB 中如何给listview控件定义或设置垂直滚动条(水平滚动条不要)

Flutter 如何使用 ListView 水平和 GridView 垂直滚动屏幕

SwiftUI Drag 事件如何限制仅检测水平/垂直滚动

如何从 ListView 的右边缘设置垂直滚动条的边距?

Android:检测 ListView 是不是有滚动条(设置新数据后)

如何启用垂直滚动的滚动条并禁用水平滚动?