我想写一些更复杂的东西,但为了简化问题,我写了一个简短的例子来反映我的问题的本质:
Widget build(BuildContext context) {
return NotificationListener<ScrollNotification>(
onNotification: (ScrollNotification notification) {
print("up"); //TODO
return true;
},
child: NotificationListener<ScrollNotification>(
onNotification: (ScrollNotification notification) {
print("down"); //TODO
return true;
},
child: SingleChildScrollView(
controller: horizontalScroll,
scrollDirection: Axis.horizontal,
child: Container(
width: 2000,
child: Scaffold(
body: Container(
color: Colors.lightBlueAccent,
child: ListView.builder(
controller: verticalScroll,
itemCount: 30,
itemBuilder: (context, index) {
return Container(
height: 30,
color: Colors.lightBlueAccent,
child: Text("Line " + index.toString()),
);
})),
))),
),
);
}
我的目标:两个 NotificationListener 都应该在任何子滚动小部件中捕获滚动事件,但实际上我看到只有 print("down") 被触发。如何解决问题,使滚动事件到达两个 NotificationListener?我无法将它们组合起来,因为在实际项目中,它们是两个不同的小部件。此外,这个项目曾经可以工作,直到我尝试将所有内容更新为空安全,也许这就是问题