在列表视图中滚动地图时如何避免滚动列表视图

2023-11-27

我有一个 ListView,在其顶部有一个地图,我希望当 ListView 滚动时地图滚动到视图之外,但我也希望用户能够与地图交互。因此,滚动应该仅在用户在其他 ListView 小部件上滚动时发生,而不是在他们在地图上滚动时发生,然后我希望将手势直接应用于地图。 但目前,当用户在地图上滚动时,它会滚动整个 ListView。

我已经尝试过我在这里遇到的其他建议在 Flutter 中,子部件如何阻止其可滚动父部件的滚动?我添加了一个GestureDetector正如上面帖子的答案中所建议的,将地图容器包装在下面的示例中,但这只是在地图上滚动时阻止了 ListView 和地图的滚动。视频链接https://i.stack.imgur.com/3Ngqw.jpg

这是我的构建方法返回的小部件。该代码取决于google_maps_flutter plugin.

Container(
  height: MediaQuery.of(context).size.height,
  child:
  ListView.builder(
    itemCount: 12 + 1,
    itemBuilder: (context, index) {
      if (index == 0) return GestureDetector(
        onVerticalDragUpdate: (_){},
        child: Container(
          height: MediaQuery.of(context).size.height / 2,
          child: GoogleMap(initialCameraPosition: initalPosition),
        ),
      );
      else return ListTile(title: Text("$index"),);
    }
  )
),

我原本希望地图能够捕获手势,但事实并非如此,包含它的列表视图捕获了所有手势。谁能建议我如何强制将列表中该项目的所有手势直接传递到地图,并且在滚动列表中的其他项目时仍然使列表滚动?


接受的答案(埃塞特·穆罕默德截至撰写本文时,答案已标记为例外)太复杂了,就我而言,它甚至不起作用!它提供了从左到右的滚动、平移和缩放,但是从上到下的滚动仍然滚动ListView.

真正的解决方案非常简单,因为GoogleMap默认情况下有这些手势检测器。您只需指定手势检测的优先级必须为GoogleMap并不是ListView。这是通过给予来实现的GoogleMap反对EagerGestureRecognizer例如以下方式。

ListView(
  children: <Widget>[
    Text('a'),
    Text('b'),
    GoogleMap(
      ...,
      gestureRecognizers: {
        Factory<OneSequenceGestureRecognizer>(
          () => EagerGestureRecognizer(),
        ),
      },
    ),
  ],
)

这样,发生在屏幕上或上方的所有手势GoogleMap对象的优先级将由GoogleMap而不是任何其他小部件。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在列表视图中滚动地图时如何避免滚动列表视图 的相关文章

随机推荐

  • 关闭浏览器窗口后是否有可能如何发送 AJAX? [复制]

    这个问题在这里已经有答案了 关闭浏览器窗口后是否有可能如何发送AJAX 我有一个使用 JavaScript jQuery 进行移动的浏览器游戏 如果我在每次移动后发送 Ajax 这对服务器来说会很困难 所以我想在用户关闭窗口 或书签 时发送
  • 在 C# 中获取重叠的正则表达式匹配

    我有正则表达式1 0 1和测试字符串1000010001 我想要 2 场比赛 但我发现只找到 1 场 var regex new Regex 1 0 1 var values regex Matches intBinaryString va
  • 用于虚拟机映像的二进制差异和补丁实用程序[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我需要经常发布一些软件 并且该软件包含为VMWare磁盘文件 即 vmdk文件 我想要的是某种二进制差异和补丁实用程序 以使生成的增量尽可能小 让我
  • R 中的轮廓图

    我有一组数据 其中包含 项目 关联簇 轮廓系数 如有必要 我可以使用更多信息进一步扩充该数据集 我想在 R 中生成轮廓图 我在这方面遇到了麻烦 因为我遇到的示例使用内置的 kmeans 或相关 聚类函数并绘制结果 我想绕过此步骤并为我自己的
  • 如何在 php.ini 中启用 oci8 (Oracle) 扩展 - PHP 警告:PHP 启动:第 0 行未知

    我有 Windows XP 最近安装了 wamp apache mysql php 32 位 我测试了安装 使用 php 和 apache 连接到 mysql 数据库 一切正常 现在我需要连接到 Oracle 数据库 因此我尝试启用一些扩展
  • jquery on 带/不带选择器参数和 jquery delegate 有什么区别?

    我正在使用jquery 1 10 我想知道这三个函数有什么区别 哪个功能更好 为什么 委托功能的目的是什么 dropdown menu on click show opt menu function alert hello dropdown
  • 毕加索图像缓存

    我想下载以下带有毕加索图像缓存的图像下载代码 DownloadImage downloadImage new DownloadImage downloadImage execute advert getImgUrl private clas
  • 在 SwiftUI 中使用时间间隔的 DatePicker

    我想在 SwiftUI 中使用 DatePicker 它工作正常并且符合预期 我想添加一个时间间隔 如所解释的 UIDatePicker 15 分钟增量 Swift DatePicker Please enter a time select
  • 2 个不同的小查询与 1 个带子查询的查询

    我有这样的桌子 name personal number Jon 222 Alex 555 Jon 222 Jimmy 999 我需要获取每个名字 其中个人号码在表中重复超过 1 个 即结果必须是 Jon Jon 因此 变体 1 SELEC
  • Django:覆盖 get_FOO_display()

    一般来说 我不熟悉 python 重写方法和使用 super 的方式 问题是 我可以覆盖get FOO display class A models Model unit models IntegerField choices someth
  • render_to_string 和 response.content.decode() 不匹配

    我正在写我的第一个Django跟随本书一起学习应用程序 http chimera labs oreilly com books 1234000000754 ch05 html passing python variables to be r
  • .htaccess 拒绝所有人不起作用

    我的问题是我想拒绝对文件夹的访问 但我不能 我已经放了一个 htaccess此文件夹中的文件仅包含以下几行 order deny allow deny from all 知道会发生什么吗 我得到它 这是由于 apache 配置造成的 在我的
  • 解决日期时间许可证问题的最佳方法[关闭]

    Closed 这个问题需要多问focused 目前不接受答案 目前我们正在开发一个基于 Windows 的小型应用程序 我们曾经提供为期30天的试用版许可证 30天到期后 该产品将无法使用 现在这是我的问题 想象一下 客户于 1 月 1 日
  • Codeigniter - 会话过期和“记住我”功能

    我正在 Codeigniter 中构建 记住我 功能 通常我会看到库 项目使用令牌在用户上设置 cookie 该令牌会保存在数据库中 并在用户每次访问网站时进行比较 在 Codeigniter 中 我们可以设置会话过期时间 这导致我尝试不同
  • 为什么 System.arraycopy 是 Java 原生的?

    我很惊讶地在 Java 源代码中看到 System arraycopy 是一个本机方法 当然原因是因为它更快 但是代码能够使用哪些本地技巧来使其速度更快呢 为什么不直接循环原始数组并将每个指针复制到新数组 当然这不是那么慢和麻烦 在本机代码
  • Firebase 管理多个身份验证提供商

    我正在开发 Android 应用程序 该应用程序在 Facebook Google 和电子邮件 密码等 Firebase 的帮助下使用多重身份验证 每个身份验证都以不同的方式运作良好 但是 当我使用 google 登录然后注销时 以及稍后当
  • 使用 python 定义 chromedriver selenium 的下载目录

    一切都在标题中 有没有办法定义与 python 一起使用的 selenium chromedriver 的下载目录 尽管进行了很多研究 但我还没有找到结论性的东西 作为一个新手 我已经看到了很多关于 Chromedriver 的 所需功能
  • WPF TabControl 在 SelectionChanged 上,将焦点设置到文本字段

    我有一个选项卡控件和一些选项卡项 我正在成功收听SelectionChanged事件 并检查我感兴趣的选项卡是否是当前选定的选项卡 我正在使用这段代码 如下 并单步执行调试器 我可以看到我的分支逻辑按设计工作 但是 我遇到的问题是有些东西覆
  • ElasticSearch Java 客户端查询嵌套对象

    我如何转换这种查询 query nested path consultations query bool must match consultations prescriptions alfuorism match consultation
  • 在列表视图中滚动地图时如何避免滚动列表视图

    我有一个 ListView 在其顶部有一个地图 我希望当 ListView 滚动时地图滚动到视图之外 但我也希望用户能够与地图交互 因此 滚动应该仅在用户在其他 ListView 小部件上滚动时发生 而不是在他们在地图上滚动时发生 然后我希