GestureDetector 在滚动时不接收事件
GestureDetector does not receive events while scrolling
我有一个 ListView,其中每个项目都有自己的 onTap 事件。如果我在列表空闲(不滚动)时点击一个项目,一切正常,但如果我在滚动动作后立即点击一个项目,GestureDetector 不会收到任何东西,这使得应用程序对快速导航的用户没有反应.有没有办法防止这种行为?
class _ScrollClickTestPageState extends State<ScrollClickTestPage> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("Test"),
),
body: ListView.builder(
shrinkWrap: true,
itemCount: 20,
itemBuilder: (context,index) {
return GestureDetector(
behavior: HitTestBehavior.opaque,
onTap: () => print("test: click detected"),
child: Container(
width: double.maxFinite,
height: 200,
color: ([...Colors.primaries]..shuffle()).first,
child: Center(
child: Text(
'$index',
style: Theme.of(context).textTheme.headline4,
),
),
),
);
}
),
);
}
}
好吧,我有这个问题的工作模型:
试试下面的代码:
替换你的onTap: () => print("test: click detected")
onTap: () => {print("test: click detected")}
并且你的点击手势正在工作。
我有一个 ListView,其中每个项目都有自己的 onTap 事件。如果我在列表空闲(不滚动)时点击一个项目,一切正常,但如果我在滚动动作后立即点击一个项目,GestureDetector 不会收到任何东西,这使得应用程序对快速导航的用户没有反应.有没有办法防止这种行为?
class _ScrollClickTestPageState extends State<ScrollClickTestPage> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("Test"),
),
body: ListView.builder(
shrinkWrap: true,
itemCount: 20,
itemBuilder: (context,index) {
return GestureDetector(
behavior: HitTestBehavior.opaque,
onTap: () => print("test: click detected"),
child: Container(
width: double.maxFinite,
height: 200,
color: ([...Colors.primaries]..shuffle()).first,
child: Center(
child: Text(
'$index',
style: Theme.of(context).textTheme.headline4,
),
),
),
);
}
),
);
}
}
好吧,我有这个问题的工作模型:
试试下面的代码:
替换你的onTap: () => print("test: click detected")
onTap: () => {print("test: click detected")}
并且你的点击手势正在工作。