如题,父视图是一个滚动视图,例如ListView、SingleScrollView等。子视图是GestureDetector(child: xxx)
当在GestureDetector中监听滑动时,例如onHorizontalDragStart、onVerticalDragStart、onPanStart,并不会手指一移动,就马上走这些回调方法,而是都会移动一小段距离才会回调,这明显是有问题的。
以上问题,即使把父视图的滚动设置为不可滚动,还是没什么变化;如果把可滚动的父视图去掉,就不会有问题,手指一滚动就会马上回调,这是为什么,求解啊...
以下是全部代码:
@override
Widget build(BuildContext context) {
return Scaffold(
body: SingleChildScrollView(
child: SizedBox(
width: double.infinity,
height: 1500,
child: Column(
children: [
Container(
width: double.infinity,
height: 300,
color: Colors.red,
),
Container(
width: double.infinity,
height: 500,
color: Colors.green,
child: GestureDetector(
onPanStart: (details) {
print('开始滑动...');
},
onPanUpdate: (details) {
print('滚动中...');
},
onPanEnd: (details) {
print('滑动结束...');
},
onPanDown: (details) {
print('开始触碰...');
},
onPanCancel: () {
print('结束触摸...');
},
child: CustomPaint(
size: Size.infinite,
painter: DrawingPainter(
pointsList: points,
),
),
),
),
],
),
),
),
);
}