gpt4 book ai didi

flutter - 通过 ScrollUpdateNotification 查找 Flutter Scrollable

转载 作者:IT王子 更新时间:2023-10-29 06:51:39 30 4
gpt4 key购买 nike

我正在寻找一种通用方法来获取对触发 ScrollUpdateNotification 的 Scrollable 对象的引用。

我看过 this答案只有最后一个选项似乎可行,而且最终似乎功亏一篑。我可以确定滚动偏移量,但不能确定对可滚动对象本身的引用。

考虑以下代码...

final NotificationListener<ScrollUpdateNotification> scrollNotifier = NotificationListener<ScrollUpdateNotification>(
child: widget,
onNotification: (ScrollUpdateNotification value) {
ScrollableState scrollable1 = Scrollable.of(value.context);
ScrollableState scrollable2 = Scrollable.of(context);
return false;
},
);

两个可滚动对象始终为空。第一个是因为 value.context 指的是正在收听的手势的上下文。第二个是因为上下文是 NotificationListener 所在的上下文。有没有其他方法可以通用地实现这一目标?

最佳答案

那是因为当您执行 Scrollable.of(context) 时,在内部它实际上并没有获取 Scrollable。它获取一个 _ScrollableScope,其中包含 ScrollableState 的实例。

问题是,小部件树大致类似于:

Scrollable
RawGestureDetector
_ScrollableScope

传递给通知的是 RawGestureDetector 的上下文。


考虑到这一点,您仍然可以通过执行以下操作来获取 Scrollable 实例:

NotificationListener<ScrollNotification>(
onNotification: (notification) {
notification.context.ancestorStateOfType(TypeMatcher<ScrollableState>());
},
child: child,
),

关于flutter - 通过 ScrollUpdateNotification 查找 Flutter Scrollable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51981809/

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