Flutter 2.5版本后如何开启Web端与Windows端的触摸手势支持?
问题原因
Flutter 2.5及以上版本默认关闭了桌面端(Windows/macOS/Linux)的触摸手势支持,框架为了优化非移动场景的事件处理性能,默认不会将触摸输入事件分配给ScrollView、Tabs等手势组件,所以会出现触摸操作无响应的问题,和项目配置、运行环境无关。
修复方案
在项目入口的main函数中,手动配置手势绑定的支持设备类型,添加触摸设备的支持即可,需要先导入gestures依赖包。
修复后的完整示例代码如下:
import 'package:flutter/material.dart'; import 'package:flutter/gestures.dart'; void main() { // 配置手势支持的设备类型,添加触摸设备支持 GestureBinding.instance?.gestureSettings = const GestureSettings( supportedDevices: { PointerDeviceKind.mouse, PointerDeviceKind.touch, PointerDeviceKind.stylus, PointerDeviceKind.trackpad, }, ); runApp( MaterialApp( home: Scaffold( body: ListView.builder( itemBuilder: (buildContext, index) => ListTile( title: Text("test " + index.toString()), ), ), ), ), ); }
验证说明
- 修改后重新编译项目即可生效,debug和release模式均支持
- 所有系统原生手势组件(滑动、拖拽、缩放类)都可以正常响应触摸操作
- 不需要额外修改安卓、iOS端的配置,不会影响移动端的原有手势逻辑
内容的提问来源于stack exchange,提问作者puaaaal
相关产品推荐
相关产品推荐

