使用嵌套的 ListView 滑动回调防止 TabView 捕获第一个选项卡上的某些滑动手势

问题描述 投票:0回答:1

我正在开发一个具有三选项卡屏幕的 flutter 应用程序。

在第一个选项卡上,我有一个包的自定义视图,其中有一个

ListView
,其中每行都有一个滑动手势回调(从左向右滑动)。
TabView
还具有滑动手势来更改选项卡(带有完整动画)。

我的问题是,

TabView
正在捕获第一个选项卡上从左到右的滑动手势,即使左侧没有选项卡可供导航。这可以防止
ListView
中的 Row 检测到滑动并触发其回调。我想保留选项卡滑动功能,同时允许行滑动回调工作。

这是我的设置:

  • A
    TabView
    带有三个选项卡。
  • 第一个选项卡包含一个 PackageView,其中包含一个
    ListView
    。每个
    ListView
    项目都旨在检测从左到右的滑动并触发事件。
  • 我需要在第一个选项卡上从左向右滑动才能通过
    TabView
    传递到
    ListView
    ,而不让
    TabView
    捕获它。

这是一个图表:

Diagram

这是视频链接:

展示问题的视频

如何防止

TabView
干扰第一个选项卡上的滑动手势,从而允许
ListView
项目正确检测并响应滑动?

为了解决该问题,我尝试通过将

scrollPhysics
设置为
NeverScrollableScrollPhysics
来禁用第一个选项卡上的滑动手势,然后将第一个选项卡的内容包装在
GestureDetector
中以手动处理滑动,但它不起作用。

flutter
1个回答
0
投票

将手势代码更改为此。


                   GestureDetector(
                      onHorizontalDragUpdate: (details) {
                        // Detecting left swipe
                        if (details.delta.dx < 0) {
                          print('Swiped left');
                        }
                        // Detecting right swipe
                        else if (details.delta.dx > 0) {
                          print('Swiped right');
                        }
                      },
                      child: YourWidget(...),
                     ), // GestureDetector

© www.soinside.com 2019 - 2024. All rights reserved.