gpt4 book ai didi

dart - GestureDetector 内的 ScrollView : Dispatch Touch Events

转载 作者:IT王子 更新时间:2023-10-29 07:04:08 25 4
gpt4 key购买 nike

我有一个 GestureDetector 负责上下拖动容器以更改高度。容器内容可能太长,必须滚动内容。

我不知道如何将触摸事件分派(dispatch)到正确的组件,我尝试使用 IgnorePointer 并更改 ignoring 属性。

class _SlideSheetState extends State<SlideSheet>

bool _ignoreScrolling = true;

GestureDetector(
onVerticalDragUpdate: (DragUpdateDetails details) {
if(isDraggedUp) {
setState(() {
_ignoreScrolling = false
});
}
// update height of container, omitted for simplicity
},
child: NotificationListener(
onNotification: (ScrollNotification notification) {
if(notification is OverscrollNotification) {

if(notification.overscroll < 0) {
// the scrollview is scrolled to top
setState(() {
_ignoreScrolling = true;
});

}

}
},
child: IgnorePointer(
ignoring: _ignoreScrolling,
child: SingleChildScrollView(
physics: ClampingScrollPhysics(),
child: Container(
// ...
)
)
)
)

有人知道在 Widget 树上或下调度触摸事件的好方法吗?因为在我的解决方案中,很明显,您总是必须进行一次触摸事件才能将“监听器”从 GestureDetector 更改为 SingleChildScrollView,这对用户来说很烦人,说最少。

最佳答案

我今天正在研究同一种小部件。您不需要包含 NotificationListener 的 GestureDetector。它是多余的,根据我的经验,它覆盖了它内部或下面的 scrollListener(取决于你是将它放在父/子场景还是堆栈场景中)。处理 NotificationListener 本身中的所有内容。包括更新容器的高度。如果你需要滚动容器在滚动之前增长,那么我把我的放在一个带有“扩展”bool 的堆栈中,然后在滚动容器的顶部 react 性地构建一个手势检测器。然后当它展开时,我使用 NotificationListener 来处理它的拖动位移。

Stack(children:[
NotificationListener(/* scroll view stuff */),
expanded ? GestureDetector() : Container()
]);

关于dart - GestureDetector 内的 ScrollView : Dispatch Touch Events,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55103738/

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