我正在尝试获取 NestedScrollView 的滚动方向(向上/向下),以便我的小部件之一可以做出相应的反应。
我已经使用了NotificationListener小部件并尝试打印它返回的axisDirection,但当我向两个方向滚动时它只返回“向下”。显然,这就是它应该的行为方式,但是,Flutter 中似乎没有任何方法可以知道如何获取滚动方向。有没有办法获取滚动方向,无论是 AxisDirection 还是 bool ?
@override
Widget build(BuildContext context) {
return Container(
color: Colors.black,
child: SafeArea(
child: Scaffold(
backgroundColor: Color.fromARGB(255, 22, 22, 22),
body: NotificationListener<ScrollStartNotification>(
onNotification: (ScrollNotification scrollInfo) {
print("scrollInfo up ===== ${scrollInfo.metrics.axisDirection}");
},
child: NotificationListener<ScrollStartNotification>(
onNotification: (ScrollNotification scrollInfo) {
if (scrollInfo.metrics.axisDirection == AxisDirection.down) {
print(
"scrollViewColtroller down == ${scrollViewColtroller.position.axisDirection}");
}
},
child: NestedScrollView(
controller: scrollViewColtroller,
headerSliverBuilder:
(BuildContext context, bool boxIsScrolled) {
return <Widget>[
SliverAppBar(
floating: true,
snap: true,
pinned: false,
elevation: 10,
)
];
}, …Run Code Online (Sandbox Code Playgroud)