列表视图中具有缩放/平移的画布。如何禁用滚动

时间:2019-01-14 06:57:33

标签: canvas scroll flutter

对不起,我的英语。询问您是否听不懂。

你好!通常,我有一个listView,它是canvas所在的gestureDetector的元素之一。画布会绘制图案。

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

我有这样的结构

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

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

1 个答案:

答案 0 :(得分:0)

您可以使用物理属性启用/禁用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,
              ),
            )
          ],
        ));
      }