首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在Flutter MacOS中禁用拖动滚动但保持鼠标滚轮滚动ListView?

在Flutter中,如果你想在MacOS上禁用拖动滚动但保持鼠标滚轮滚动ListView,你可以通过自定义GestureDetector来实现。以下是一个简单的示例代码,展示了如何实现这一功能:

代码语言:txt
复制
import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: Text('Disable Drag Scroll')),
        body: MyListView(),
      ),
    );
  }
}

class MyListView extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return GestureDetector(
      onPanStart: (_) {
        // Disable drag scrolling by returning false
        return false;
      },
      child: ListView.builder(
        itemCount: 100,
        itemBuilder: (context, index) {
          return ListTile(title: Text('Item $index'));
        },
      ),
    );
  }
}

基础概念

  • GestureDetector: 用于检测和处理手势事件的Flutter小部件。
  • ListView: 一个用于显示垂直滚动列表的小部件。

相关优势

  • 灵活性: 通过自定义GestureDetector,你可以精确控制手势事件的处理。
  • 用户体验: 禁用拖动滚动可以防止误操作,提高用户体验。

应用场景

  • 当你希望用户只能通过鼠标滚轮滚动列表,而不希望通过拖动来滚动时,这种需求很常见。

遇到的问题及解决方法

如果你在实现过程中遇到问题,比如ListView完全无法滚动,可能是因为GestureDetector阻止了所有手势事件。确保只在onPanStart中返回false,而不是在其他手势回调中返回false

参考链接

通过这种方式,你可以在MacOS上禁用ListView的拖动滚动,同时保持鼠标滚轮滚动功能。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

关于ScrollViewr和滚动轮劫持(scroll-wheel-hijack)

所谓的滚动轮劫持,简单来说即是在一个可以滚动的页面使用鼠标滚轮滚动页面的过程鼠标进入某个可以滚动的子元素导致只在这个子元素滚动而整个页面想滚滚不动了。 具体看看这个例子: ?...这个情况相信很多人都遇到过,滚轮被“劫持”后索性去拖动滚动条。...当然我们不满足于无脑禁用鼠标滚轮,我们应该更智能些,先让ScrollViewer滚到底,再交由外层的ScrollViewer滚下去。...这里面用到几个属性: MouseWheelEventArgs的Delta表示鼠标滚轮的变更量,当这个值为正数时表示滚轮向上。 ExtentHeight,获取ScrollViewer内容的实际高度。...熟悉了上面几个属性的作用后我们可以更好地控制鼠标滚轮的行为,当鼠标向上滚动时,判断现在是否已经滚到顶了,如果是就不处理鼠标滚轮事件: if (VerticalOffset == 0 && e.Delta

1.3K30

jimojianghu

浏览器只允许进行滚动和持续缩放操作,任何其它被auto值支持的行为不被支持。 启用平移和缩小缩放手势,禁用其他非标准手势,例如双击以进行缩放。...请注意,滚动向上(pan-up)意味着用户正在将其手指向下拖动到屏幕表面上,同样 pan-left 表示用户将其手指向右拖动。...笔记本触摸板双指滑动,将响应滚轮事件,因此可以监听该事件,禁止触摸板手指缩放界面。 需要注意滚轮默认事件,会导致子元素滚动失效,这时候就要在子元素上阻止相同事件冒泡。...特别是浏览器优化页面滚动时的性能,可以让页面滚动更顺滑。 在Chrome,wheel / touch 等事件的 passive 会默认设置为true,Safari不支持。...添加 passive 参数为true后,touchmove 事件不会阻塞页面的滚动(同样适用于鼠标滚轮事件)。

3.8K00
  • macOS 上值得推荐的软件(第一弹)

    目录前言软件推荐Longshot - Mac 截图贴图工具 支持滚动截图Mos - macOS 平滑滚动或设置滚动方向小工具NetNewsWire - 一款免费开源的 RSS 阅读器总结前言macOS...软件推荐Longshot - Mac 截图贴图工具 支持滚动截图macOS 上的长截图工具有很多,好用的比较少,这里推荐这款的原因,是它的长截图功能非常好用。...然而对于使用鼠标的用户来说,这个滚动方向需要反过来,才能更符合直觉。这是由于大多数人一开始接触的是 Windows 系统,使用鼠标的习惯沿袭了过来,让你向上推鼠标滚轮,总感觉怪怪的。...这款小工具就可以设置反转鼠标滚轮方向,让你鼠标操作更加符合先前的习惯。...这款软件的官网地址如下,需要的话可以自行下载:MOS | 一个用于在 MacOS 上平滑你的鼠标滚动效果或单独设置滚动方向的小工具, 让你的滚轮触控板NetNewsWire - 一款免费开源的 RSS

    29920

    如何让Windows文件管理器滚动macOS奶油般顺滑?

    最终效果 传统Windows管理器explorer.exe并不顺滑 传统Windows管理器位置为 C:\Windows\explorer.exe 使用鼠标滚轮滚动,并不顺滑 ?...使用鼠标滚轮滚动,并不顺滑 如何让Windows管理器macOS奶油般顺滑? 鼠标中键滚轮每转动一格,windows文件管理器就会移动相应的行数,注意这里是行数,而不是屏幕的最小单位,像素!...这意味着,如果你的鼠标中键滚轮滚动时有卡顿感,就无法让Windows文件管理器更流畅。 ? 鼠标中键滚轮每转动一格 换鼠标 我寻找支持无卡顿流畅滚动鼠标,最终找到了微软官方设计的一款鼠标arc ?...微软官方设计的一款鼠标arc 微软官方设计的一款鼠标arc exporer.exe程序过于古老,使用了微软官方推荐的鼠标,也无法足够顺滑,于是我使用了 Windows 预发布的未来的文件管理器 Files...Files 上面是Arc鼠标在旧文件资源管理器(右侧)exprorer.exe 和新文件资源管理器(左侧)Files的流畅效果对比~ 右侧的卡顿也能用,左侧的文件管理器奶油般顺滑~ Files下载地址

    1.7K10

    Flutter跨平台移动端开发丨SingleChildScrollView、ListView......

    默认情况下,Flutter会根据具体平台分别使用不同的ScrollPhysics对象,应用不同的显示效果,当滑动到边界时,继续拖动的话,在iOS上会出现弹性效果,而在Android上会出现微光效果。...controller:控制器对象,主要作用是控制滚动位置和监听滚动事件 primary:是否使用 widget 树默认的 PrimaryScrollController 。...默认情况下,Flutter会根据具体平台分别使用不同的ScrollPhysics对象,应用不同的显示效果,当滑动到边界时,继续拖动的话,在iOS上会出现弹性效果,而在Android上会出现微光效果。...默认情况下,Flutter会根据具体平台分别使用不同的ScrollPhysics对象,应用不同的显示效果,当滑动到边界时,继续拖动的话,在iOS上会出现弹性效果,而在Android上会出现微光效果。...ListView 和 GridView 都有对应的组合对象:SliverList 和 SliverGrid。

    8.7K51

    Flutter 3.3更新详解

    在传统的 Web 应用你可以轻松用拖动手势来选择网页上的节点,这在 Flutter Web 应用无法轻松达成。 从今天起,一切都发生了变化。...将页面滚动到底部的 DartPad,并跟随以下步骤进行操作: 缩小窗口让上半部分出现滚动条 将指针悬停在上半部分 使用触控板进行滚动Flutter 3.3 以前,使用触控板滚动拖动元素,因为 Flutter...框架稳定性 禁用 iOS 内存指针压缩 在 Flutter 2.10 稳定版的发布,我们为 iOS 启用了 Dart 的内存指针压缩优化。...但是,Yeatse 在 GitHub 上提醒我们这项优化包含了我们并未预料到的后果。Dart 通过为堆保持一个大的虚拟内存来实现指针压缩。...目前我们还没应用这项更改, FragmentProgram API 改进支持的设计文档 中所计划的,有可能在未来实行。 想要了解更多内容,你可以查看这个 Flutter 着色器示例。

    2.9K20

    Mac快速上手指南

    鼠标滚轮方向的设置:   mac第一次连上鼠标时,使用才叫别扭,滚动方向完全跟windows相反。查了下滚轮滚动windows指的是滚动条,mac指的是屏幕主体。...触摸板双指滑动指屏幕主体倒是正常,与windows10保持一致。毕竟其他鼠标都是滚轮,跟magic mouse滑动操作不一样,还是修改为与windows操作方式一致比较舒服: ?   ...6、软件的卸载 软件的安装和卸载方面,虽然与windows相比看起来方便的多,同时也带来了很多混乱:安装渠道和方式较多(app store、第三方dmg、第三方pkg),多种不同的卸载方法(launchpad...下载链接:https://github.com/dean-wong/The-Uninstaller/releases   该工具针对app store和非pkg安装(dmg 直接拖动应用到应用程序文件夹...为啥有的文件或文件夹在Finder中看不到,但是可以在Terminal通过ls看到(但也不是ls -a对应的“隐藏文件”!)? ? ?

    1.9K30

    【Java AWT 图形界面编程】使用小键盘按键缩放 Canvas 画布绘制的背景图像 ( 键盘按键监听 + 绘制超大图像 + 鼠标拖动 + 鼠标滚轮缩放 + 以当前鼠标指针位置为缩放中心 示例 )

    + 鼠标滚轮缩放 + 以当前鼠标指针位置为缩放中心 示例 ---- 在 【Java AWT 图形界面编程】Canvas 绘制超大图片 ( 使用鼠标拖动查看全图 | 设置 JFrame 窗口自动关闭...| 获取并绘制图片 | 鼠标拖动计算位移 | 画布偏移 ) 博客 , 绘制了超大图像 , 可以使用鼠标拖动 ; 在 【Java AWT 图形界面编程】使用鼠标滚轮放大缩小 Canvas 画布 ( 鼠标滚轮事件监听器...MouseWheelListener ) 博客 , 新增鼠标滚轮缩放画布示例 , 但是使用鼠标拖动时 , 拖动的效果也随之缩放, 缩小画布后 , 移动鼠标 , 移动距离对应的缩放效果也随之缩小...; 在 【Java AWT 图形界面编程】使用鼠标滚轮放大缩小 Canvas 画布绘制的背景图像 ( 鼠标滚轮事件监听器 MouseWheelListener | Canvas 绘制图像并设置图像大小...) 博客 , 使用缩放背景图像的方式 , 实现缩放效果 , 并同时福袋鼠标指针拖拽效果 ; 本博客实现的案例 , 在上面的基础上 , 添加了鼠标滚轮缩放的中心点设置为当前鼠标中心点 ; 1、代码示例

    1.8K20

    打造聊天框丝滑滚动体验:AI 聊天框的翻转之道

    如果在 web 什么也不做,聊天体验可能是这样的,需要用户手动滚动到最新消息:试想一下如何在 web 实现微信的效果。每当聊天框接收到新消息时,都需要调用滚动方法滚动到消息底部。...并且在消息输出时,也可以随意滚动查看历史记录。滚动条调整与滚动行为反转最核心的问题已经解决了,总觉得哪里看起来怪怪的。...滚动条怎么跑到左边,并且滚动行为和鼠标滚轮的方向反了,滚轮向上滚,聊天框却向下滚。...(让人想起了 MacOS鼠标滚轮的反人类体验)查阅文档发现 CSS 有个 direction: rtl; 属性可以改变内容的排布的方向。这样我们就可以把滚动条放回右边了。...然后在通过监听滚动事件,改变滚动方向就可以恢复鼠标滚轮滚动行为。

    1.5K21

    【Java AWT 图形界面编程】使用鼠标滚轮缩放 Canvas 画布绘制的背景图像 ( 绘制超大图像 + 鼠标拖动 + 鼠标滚轮缩放 + 以当前鼠标指针位置为缩放中心 示例 )

    一、鼠标滚轮缩放的中心点设置为当前鼠标中心点 - 要点分析 ---- 鼠标指针指向界面的 Canvas 画布某个位置 , Canvas 画布绘制着一张超大图片 , 以该位置为中心 , 滑动鼠标滚轮时进行缩放...; 使用鼠标滚轮缩放后 , 在 Canvas 绘制的图片的尺寸肯定是放大或者缩小了 , 尺寸发生了改变 ; 图片缩放时 , 鼠标指针指向一个位置 , 该位置对应着一个当前 Canvas 画布的 x...垂直方向的比例 仍然保持不变 , 那就需要移动图片的位置 ; 如果放大图片就需要将图片往左上方移动 ; 如果缩小图片就需要将图片往右下方移动 ; 此时可以分析出 , 如果要实现 鼠标滚轮缩放的中心点设置为当前鼠标中心点..., 并设置图片位置 ; 这样图片缩放时 , 始终可以保证鼠标指向的部位保持位置不变 ; 1、保存当前鼠标指针指向的位置 首先 , 在类定义如下成员字段 , pointer_x 和 pointer_y...在鼠标滚轮缩放完成后 , 再根据鼠标指针指向的位置和比例 , 结合图片缩放后的尺寸 , 重新计算画布偏移的位置 , 以达到鼠标指向的图片元素位置基本保持不变的目的 ; /** * 计算新的比例

    2.8K10

    移动端app开发问题及理解

    ondbclick 鼠标双击事件 onmousedown 鼠标按下 onmouseup 鼠标按键抬起 onmouseover 鼠标进入某个元素 onmousemove 鼠标移动到元素 onmouseout...一样,ie专属 onkeyup 键盘按键抬起 onkeydown 键盘按键按下 contextmenu 弹出右键菜单 h5新加事件 ondrag 元素被拖动时运行的脚本 ondragend 在拖动操作末端运行的脚本...ondragenter 当元素已被拖动到有效拖放区域是运行的脚本 ondragleave 元素离开有效拖放目标时运行的脚本 ondragover 元素在有效拖放目标上正在被拖动时运行的脚本 ondragstart...在拖动操作开端运行的脚本 ondrop 当被拖元素正在被拖放是运行的脚本 onmousewheel 当鼠标滚轮整被滚动时 onscroll 元素滚动条被滚动时 移动端事件有 click 单击事件...iPhone的UIWebView(iOS2.0-12.0 ),WKWebView(iOS8.0+,macOS10.10+),Android的WebView WebView可以理解为手机应用运行和展示网页的界面和接口

    3.8K10

    提高效率 |ArcGIS Pro 中所有快捷键一网打尽

    左键拖动 - 平移 单击左键 - 弹出 滚动滚轮 - 缩放 单击并拖动滚轮 - 倾斜和旋转(在 3D ) 右键拖动 - 持续缩放 在使用其他工具进行居中并放大或居中操作时,请分别按下 C+Shift...加号 (+) 或 Ctrl+滚动鼠标滚轮 放大。 放大该地图。 减号 (-) 或 Ctrl+滚动鼠标滚轮 缩小。 缩小地图。 Z+水平移动光标或 Z+滚动鼠标滚轮 更改 z 值。...Shift+Z+水平移动光标或 Shift+滚动鼠标滚轮 加快 z 的变化速度。 按住 Shift 并转动鼠标滚轮。...Caps Lock+Z+水平移动光标或 Caps Lock+滚动鼠标滚轮 减慢 z 的变化速度。 按住 Caps Lock 并转动鼠标滚轮。...Ctrl+滚动鼠标滚轮 放大或缩小表的比例。 Ctrl+0 将表的比例重置回 100%。 Shift+滚动鼠标滚轮 水平滚动表窗口。 Ctrl+F 显示查找和替换命令。

    1.1K20

    Chrome快捷键整理

    按住 Ctrl 键,然后点击链接 从后台在新标签页打开链接,您仍停留在当前标签页 按住 Ctrl+Shift 键,然后点击链接 在新标签页打开链接,同时切换到新打开的标签页...将链接拖动到标签页内 在指定标签页打开链接 将链接拖动到两个标签页之间 在标签页横条的指定位置建立一个新标签页,在该标签页打开链接 Ctrl+1 到 Ctrl+8 切换到指定位置编号的标签页...(只在谷歌浏览器测试版(只有英文版)可用) 激活自动滚动。...当您移动鼠标时,网页会根据鼠标的移动方向自动滚动。...+D 将当前网页加入书签 Ctrl++,或者按住 Ctrl 键并向上滚动鼠标滚轮 放大网页上的所有内容 Ctrl+-,或者按住 Ctrl 键并向下滚动鼠标滚轮 缩小网页上的所有内容 Ctrl

    6.7K40

    在Python如何使用GUI自动化控制键盘和鼠标来实现高效的办公

    你可以对机械臂编程,让它敲键盘或移动鼠标。对于涉及许多无脑点击或填表的任务,这种技术特别有用。 pyautogui 模块包含了一些函数,可以模拟鼠标移动、按键和滚动鼠标滚轮。   ...1.3.1 移动鼠标1.3.2 获取鼠标位置    1.4 控制鼠标交互1.4.1 点击鼠标1.4.2 拖动鼠标1.4.3 滚动鼠标    1.5 处理屏幕1.5.1 捕获屏幕快照1.5.2 分析屏幕快照...Python 能以很快的速度移动鼠标并击键。实际上,它可能太快,从而导致其他程序跟不上。而且, 如果出了问题,你的程序继续到处移动鼠标,可能很难搞清楚程序到底在做什么,或者如何从问题中恢复。...1.3.2 获取鼠标位置  position()函数可以返回当前鼠标的位置,即由x,y组成的元组   1.4 控制鼠标交互  随着我们知道了鼠标在屏幕上的位置,我们就可以学着来点击,拖动滚动鼠标。 ...1.4.2 拖动鼠标  拖动即移动鼠标,按着一个按键不放来移动屏幕上的位置,例如:可以在文件夹拖动文件来移动位置,或者将文件等拉入发送框内相当于复制粘贴的操作 pyautogui提供了一个pyautogui.dragTo

    4.1K31

    ubuntu快捷键设置大全

    如果文件夹里面很多文件,比如/usr/bin下面,则可以直接输入文件名快速定位:firefox 直接安/就可以输入地址,打开nautilus。 任务栏滚动鼠标=切换窗口。...工作区滚动鼠标=切换工作区。 音量那里可以滚轮调整音量的。 修改目录图标:可以把nautilus中看到的图片,直接拖放到目录属性的图标上就可以了。...压着shift拖动窗口可以让窗口吸附在屏幕的边缘 鼠标左右两键同时按,其效果相同于中键。 还有要使用滚动条移动页面时,鼠标的左、右、中键都有不同效果。...ctrl+滚轮是缩放图标。 ctrl+s是按模式选择,即可以*.jpg之类的,选择一片,支持通配符*。...b、任务栏滚动鼠标滑轮。 8、直接将 文件管理器 的文件拖到 GNOME终端 中就可以在终端得到完整的路径名。 9、修改目录图标:可将文件管理器的图片直接拖到文件夹属性所在的图标上。

    2K30

    【老孟FlutterFlutter 2 新增的功能

    鼠标输入端,现在可以立即开始使用高精度定点设备进行拖动,而不必等待处理触摸输入时所需的延迟。...这在移动设备上很有意义,但是很少有台式机用户会想到用鼠标长按某个项目来移动它,因此此版本包括适用于鼠标或触摸输入的抓握手柄。平台惯用功能的另一项改进是更新的滚动条,该滚动条可以正确显示桌面形状因素。...此版本包括一个更新的Scrollbar小部件,该小部件在桌面环境中非常有效 滚动条小部件已更新,以提供桌面上预期的交互功能,包括拖动拇指,单击轨道以上下滚动页面以及在鼠标悬停在鼠标的任何部分上时显示轨道的功能...可用的修复程序列表,带小灯泡的快速修复程序,可帮助您单击鼠标来更改代码。...我们的目标是尽最大努力使Flutter的API达到最佳状态,同时还要使您的代码保持最新。

    7.9K20

    开始使用-编写你的第一个Flutter应用程序 顶

    第1步:创建起始Flutter应用程序 第2步:使用外部包装 第3步:添加一个有状态的小部件 第4步:创建一个无限滚动ListView 第5步:添加交互性 第6步:导航到新的屏幕 第7步:使用主题更改UI...StatefulWidget类本身是不可变的,State类在整个构件的生命周期中保持不变。...lib/main.dart 第4步:创建一个无限滚动ListView 在这一步,您将展开RandomWordsState以生成并显示单词配对列表。...当用户滚动时,ListView小部件显示的列表将无限增长。 ListView的builder工厂构造函数允许您根据需要懒惰地构建列表视图。...您将学习如何在主路由和新路由之间导航。 在Flutter,导航器管理包含应用程序路由的堆栈。 将路由推入导航器的堆栈,将显示更新为该路由。 从导航器的堆栈中弹出路由,将显示返回到前一个路由。

    9.5K20

    3-Ps基础(工具栏)

    复制图层(Alt+鼠标) 移动复制,按Alt键,鼠标变成双箭头 跨文件复制,按住鼠标左键不放,拖动到另外选项卡上,需要向下拽后,鼠标变“+”加号,松开即可。...(松开之前可以按Shift键,可以放在另一个文档的相同位置) 2- 选区工具(M) 处理已有图像,经常要进行局部>操作,通过选择指定的区域,可以对这个区域进行编辑,并保持没有选择的区域不会被改动。...)> 4.按住鼠标放大缩小,按住Alt键,向前滚动放大,向后滚动缩小 (在首选项勾选使用滚轮设置,就可以不按Alt键了) 5.用滚轮放大缩小。...套索工具.png 功能 可以创建不规则选区 (直接拖动鼠标不放到开始位置即可) 2、多边形套索工具 可以按退格键或者删除键来删除所谓的“点” 多个套索可以通过Shift工具持续画区...鼠标右键可以变形,可以按住Ctrl直接进行扭曲,拖动。Ctrl+Shift+Alt ?

    1.3K10
    领券