gpt4 book ai didi

flutter - 是否可以在 NotificationListener 中检测 ScrollNotification 的来源

转载 作者:行者123 更新时间:2023-12-05 03:55:06 28 4
gpt4 key购买 nike

我的页面中有 4 个可滚动小部件,1 个垂直(主要)和 3 个水平。

还有 2 个可滚动小部件(1 个垂直和 1 个水平)触发背景的视差动画。

我如何检测哪个 Scrollable 小部件正在调度 ScrollNotification。

例子如下:

class MYPage extends StatefulWidget {
MYPage({Key key}) : super(key: key);

@override
_MYPageState createState() => _MYPageState();
}

class _MYPageState extends State<MYPage> {
double scrollX = 0.0;
double scrollY = 0.0;

@override
Widget build(BuildContext context) {
return Scaffold(
body: Stack(
fit: StackFit.expand,
children: <Widget>[
ParallaxBackground(scrollX, scrollY),
Positioned.fill(
child: NotificationListener<ScrollNotification>(
onNotification: (notification) {
double scrollOffset = notification.metrics.pixels;
setState(() {
if (notification.metrics.axis == Axis.horizontal) {
this.scrollX = scrollOffset;
} else {
this.scrollY = scrollOffset;
}
});
return true;
},
child: SingleChildScrollView(
child: Column(
children: <Widget>[
Content(),
HorizontalScrollableContent(),
Content(),
HorizontalScrollableContentWithParallaxControl(),
Content(),
HorizontalScrollableContent(),
Content(),
],
),
),
),
),
],
),
);
}
}

最佳答案

我没有注意到任何检测卷轴来源的方法。所以,我只是将每个可滚动的 child 包围在它自己的 NotificationListener 中。我不希望任何子滚动条一直冒泡,因为我只希望父 scrollView 通知冒泡。所以,我把每个 child 都包裹起来:

NotificationListener<ScrollNotification>(
onNotification: (boolval) { return true; },
child: ScrollableChildOfChoice()
)

关于flutter - 是否可以在 NotificationListener 中检测 ScrollNotification 的来源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60487509/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com