我想检测CustomScrollView
的垂直拖动结束,是这样的:
GestureDetector(
onVerticalDragEnd: (details) {}
child: CustomScrollView(...)
);
但是它不起作用,这两个小部件似乎有冲突,我正在寻找解决此问题的方法
答案 0 :(得分:1)
使用GestureDetector
是不正确的方法,这是在停止拖动滚动视图时触发方法的方法:
class MyWidget extends StatelessWidget {
_onEndScroll(ScrollMetrics metrics) {
print('Stopped Dragging');
}
@override
Widget build(BuildContext context) {
return NotificationListener<ScrollNotification>(
onNotification: (scrollNotification) {
if (scrollNotification is ScrollEndNotification) {
_onEndScroll(scrollNotification.metrics);
}
return false;
},
child: SingleChildScrollView(
child: Column(children: <Widget>[
...List<Widget>.generate(
100,
(index) => ListTile(title: Text(index.toString())),
)
])),
);
}
}
只需将滚动视图包装在NotificationListener
小部件中,便可以从滚动视图中获取任何通知,并且只需要根据通知的类型来管理操作即可。 (我在false
的结尾处返回onNotification
,以继续收听即将到来的通知。)