Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Canvas 在列表视图中缩放/平移画布。如何禁用滚动_Canvas_Scroll_Flutter - Fatal编程技术网

Canvas 在列表视图中缩放/平移画布。如何禁用滚动

Canvas 在列表视图中缩放/平移画布。如何禁用滚动,canvas,scroll,flutter,Canvas,Scroll,Flutter,对不起我的英语。如果你不懂什么,就问 你好!!通常,我有一个listView,它是gestureDetector的元素之一,画布位于其中。画布绘制图案 我需要这个方案来增加和“滚动”。我已经注册了逻辑本身,一切正常,但是!如果开始在画布区域上下移动,它不会移动画布,而是在listView中滚动。我用谷歌搜索互联网上的漏洞,但什么也没找到。粗略地说,我需要当用户在gestureDetector区域上下移动时,所有事件都发送到那里,而不是发送到listView(父组件) 我有这样一个结构 ListV

对不起我的英语。如果你不懂什么,就问

你好!!通常,我有一个listView,它是gestureDetector的元素之一,画布位于其中。画布绘制图案

我需要这个方案来增加和“滚动”。我已经注册了逻辑本身,一切正常,但是!如果开始在画布区域上下移动,它不会移动画布,而是在listView中滚动。我用谷歌搜索互联网上的漏洞,但什么也没找到。粗略地说,我需要当用户在gestureDetector区域上下移动时,所有事件都发送到那里,而不是发送到listView(父组件)

我有这样一个结构

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。之后我会发短信