gpt4 book ai didi

ListView 中带有缩放/平移的 Canvas 。如何禁用滚动

转载 作者:IT王子 更新时间:2023-10-29 06:45:38 24 4
gpt4 key购买 nike

对不起我的英语。有什么不懂就问。

您好!通常,我有一个 listView,它是 Canvas 所在的 gestureDetector 的元素之一。 Canvas 绘制图案。

我需要这个方案来增加和“滚动”。我已经注册了逻辑本身并且一切正常,但是!如果您开始在 Canvas 区域向上或向下移动,它不会移动 Canvas ,而是滚动 listView。我在互联网上搜索了漏洞,但一无所获。粗略地说,我需要当用户在 gestureDetector 区域向上/向下移动时,所有事件都发送到那里,而不是发送到 listView(父组件)。

我有这样一个结构

ListView (
...
child: GestureDetector(
...
child: ...
child: CustomPaint(...))
)

我试图在我的 gestureDetector 上设置“行为:HitTestBehavior.translucent”,但这没有帮助。

最佳答案

您可以使用物理属性启用/禁用 ListView 的滚动:

   bool scrollListEnable = true;

@override
Widget build(BuildContext context) {
return Scaffold(
body: ListView(
physics: scrollListEnable
? AlwaysScrollableScrollPhysics()
: NeverScrollableScrollPhysics(),
children: <Widget>[
Listener(
onPointerMove: (details) {
print("onPointerMove : $details");
if (scrollListEnable) {
setState(() {
scrollListEnable = false;
});
}
},
onPointerUp: (details) {
print("onPointerUp : $details");
setState(() {
scrollListEnable = true;
});
},
child: Container(
height: 200.0,
width: 200.0,
color: Colors.red,
),
)
],
));
}

关于 ListView 中带有缩放/平移的 Canvas 。如何禁用滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54176923/

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