flutter:如何在 Web 和 Windows 上启用触摸手势(自更新 2.5 起)
flutter: How to enable touch gestures on Web and Windows (since update 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()),
),
),
),
),
);
}
这是 Flutter 2.5 中的一项重大更改,但如果您仍然需要此行为,可以使用 Flutter 的迁移指南:https://flutter.dev/docs/release/breaking-changes/default-scroll-behavior-drag#migration-guide.
您必须编写自己的 ScrollBehavior:
class MyScrollBehavior extends MaterialScrollBehavior {
@override
Set<PointerDeviceKind> get dragDevices => {
PointerDeviceKind.touch,
PointerDeviceKind.mouse,
...
};
}
MaterialApp(
scrollBehavior: MyScrollBehavior(),
...
);
这是我现在的实现:
class MyCustomScrollBehavior extends MaterialScrollBehavior {
const MyCustomScrollBehavior();
@override
Set<PointerDeviceKind> get dragDevices => {
PointerDeviceKind.mouse,
}..addAll(super.dragDevices);
}
主要内容:
MaterialApp(
scrollBehavior: const MyCustomScrollBehavior(),
home: ...,
);
好处是,你不用担心其他的PointerDeviceKind
,因为超级getter和其他的一样!
自从 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()),
),
),
),
),
);
}
这是 Flutter 2.5 中的一项重大更改,但如果您仍然需要此行为,可以使用 Flutter 的迁移指南:https://flutter.dev/docs/release/breaking-changes/default-scroll-behavior-drag#migration-guide.
您必须编写自己的 ScrollBehavior:
class MyScrollBehavior extends MaterialScrollBehavior {
@override
Set<PointerDeviceKind> get dragDevices => {
PointerDeviceKind.touch,
PointerDeviceKind.mouse,
...
};
}
MaterialApp(
scrollBehavior: MyScrollBehavior(),
...
);
这是我现在的实现:
class MyCustomScrollBehavior extends MaterialScrollBehavior {
const MyCustomScrollBehavior();
@override
Set<PointerDeviceKind> get dragDevices => {
PointerDeviceKind.mouse,
}..addAll(super.dragDevices);
}
主要内容:
MaterialApp(
scrollBehavior: const MyCustomScrollBehavior(),
home: ...,
);
好处是,你不用担心其他的PointerDeviceKind
,因为超级getter和其他的一样!