首页 > 解决方案 > Flutter:如何在 Web 和 Windows 上启用触摸手势(自更新 2.5 起)

问题描述

自 Flutter 2.5 发布以来,触摸手势不再起作用(例如使用 ScrollViwes 或 Tabs)。我没有在 Android / IOS 上进行测试,因为我当时没有为这些平台开发,但我认为默认情况下它只是对 PC 平台禁用,但我找不到任何关于此的资源并且不知道如何打开它!(在调试和发布中,我在具有多个独立项目的两个独立工作站上遇到了同样的问题)

编辑

例子:

void main() {
  runApp(
    MaterialApp(
      home: Scaffold(
        body: ListView.builder(
          itemBuilder: (buildContext, index) => ListTile(
            title: Text("test " + index.toString()),
          ),
        ),
      ),
    ),
  );
}

标签: flutterdarttouchgesture

解决方案


这是 Flutter 2.5 中的一项重大更改,但如果您仍然想要这种行为,则有来自 Flutter 的迁移指南:https ://flutter.dev/docs/release/break-changes/default-scroll-behavior-drag#migration-指导

您必须编写自己的 ScrollBehavior:

class MyScrollBehavior extends MaterialScrollBehavior {
  @override
  Set<PointerDeviceKind> get dragDevices => { 
    PointerDeviceKind.touch,
    PointerDeviceKind.mouse,
    ...
  };
}

MaterialApp(
  scrollBehavior: MyScrollBehavior(),
  ...
);

推荐阅读