Canvas 在列表视图中缩放/平移画布。如何禁用滚动
对不起我的英语。如果你不懂什么,就问 你好!!通常,我有一个listView,它是gestureDetector的元素之一,画布位于其中。画布绘制图案 我需要这个方案来增加和“滚动”。我已经注册了逻辑本身,一切正常,但是!如果开始在画布区域上下移动,它不会移动画布,而是在listView中滚动。我用谷歌搜索互联网上的漏洞,但什么也没找到。粗略地说,我需要当用户在gestureDetector区域上下移动时,所有事件都发送到那里,而不是发送到listView(父组件) 我有这样一个结构Canvas 在列表视图中缩放/平移画布。如何禁用滚动,canvas,scroll,flutter,Canvas,Scroll,Flutter,对不起我的英语。如果你不懂什么,就问 你好!!通常,我有一个listView,它是gestureDetector的元素之一,画布位于其中。画布绘制图案 我需要这个方案来增加和“滚动”。我已经注册了逻辑本身,一切正常,但是!如果开始在画布区域上下移动,它不会移动画布,而是在listView中滚动。我用谷歌搜索互联网上的漏洞,但什么也没找到。粗略地说,我需要当用户在gestureDetector区域上下移动时,所有事件都发送到那里,而不是发送到listView(父组件) 我有这样一个结构 ListV
ListView (
...
child: GestureDetector(
...
child: ...
child: CustomPaint(...))
)
我试图在我的gestureDetector上设置“behavior:HitTestBehavior.translucent”,但没有帮助。您可以使用物理属性启用/禁用
列表视图的滚动:
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,
),
)
],
));
}
bool scrollListEnable=true;
@凌驾
小部件构建(构建上下文){
返回脚手架(
正文:ListView(
物理:可滚动
?始终滚动滚动滚动物理()
:NeverScrollableScrollPhysics(),
儿童:[
听众(
onPointerMove:(详细信息){
打印(“onPointerMove:$details”);
如果(可滚动){
设置状态(){
scrollListEnable=false;
});
}
},
onPointerUp:(详细信息){
打印(“onPointerUp:$details”);
设置状态(){
scrollListEnable=true;
});
},
子:容器(
高度:200.0,
宽度:200.0,
颜色:颜色,红色,
),
)
],
));
}
我尝试了“行为:HitTestBehavior.不透明”和“行为:HitTestBehavior.deferToChild”。。。没有是的,但它是通用列表视图。如果我这样做,我将无法在其他屏幕上滚动。你需要什么?因此,我需要一种方法,使画布成为滚动事件的主要内容。我需要能够在画布中移动图像,并在适当的时候(例如,当我将放大的图像滚动到末尾时)切换到滚动列表视图,我认为这会有所帮助。在我的例子中,listView和canvas位于不同的文件中,但我尝试添加回调或类似的smth。之后我会发短信