【问题标题】:Canvas with Scale/Pan in list View. How to disable scroll列表视图中带有刻度/平移的画布。如何禁用滚动
【发布时间】:2019-01-14 06:57:33
【问题描述】:

对不起我的英语。有什么不懂的可以问一下。

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

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

我有这样的结构

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

我尝试在我的手势检测器上设置“行为:HitTestBehavior.translucent”,但没有帮助。

【问题讨论】:

  • 我试过“行为:HitTestBehavior.opaque”和“行为:HitTestBehavior.deferToChild”...什么都没有

标签: canvas scroll flutter


【解决方案1】:

您可以使用物理属性启用/禁用 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 和画布位于不同的文件中,但我尝试添加回调或类似的东西。之后我会发短信
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-28
  • 1970-01-01
  • 1970-01-01
  • 2020-02-22
相关资源
最近更新 更多