如何使用 InteractiveViewer 在 Flutter 中创建无限网格?

问题描述 投票:0回答:0

我想在 Flutter 中创建一个无限可交互的网格,我可以在其中放置节点/元素。

我尝试将 InteractiveViewer 与 CustomPainter 一起使用,该 CustomPainter 将网格绘制为其子项。它提供了所需的功能,但平移操作会影响网格本身,导致网格在平移过程中消失。

我现在的代码:


    /// 表示图表画布小部件。
类 DiagramCanvas 扩展 ConsumerWidget {
  const DiagramCanvas({Key? key}) : super(key: key);

  @覆盖
  小部件构建(BuildContext 上下文,WidgetRef ref){

    返回消费者(
      建设者:(上下文,手表,_){
        final screenSize = MediaQuery.of(context).size;

        返回容器(
          宽度:double.infinity,
          高度:double.infinity,
          color: Colors.white, // 设置你想要的背景颜色

          // 创建一个用于平移和缩放的 InteractiveViewer
          孩子:InteractiveViewer(
            panEnabled:真,
            scaleEnabled:真,
            boundaryMargin: EdgeInsets.all(double.infinity),
            最小尺度:0.5,
            最大比例:2.0,
            孩子:SizedBox.fromSize(
              尺寸:Size.infinite,
              孩子:堆栈(
                clipBehavior: Clip.none,
                孩子们: [
                  定位.填充(
                    孩子:ClipRect(
                      孩子:CustomPaint(
                        尺寸: 尺寸(屏幕尺寸.宽度 * 2, 屏幕尺寸.高度 * 2),
                        画家:DiagramGridPainter(),
                      ),
                    ),
                  ),
                ],
              ),
            ),
          ),
        );
      },
    );
  }
}


我需要添加或更改什么才能实现我的目标?

flutter dart canvas grid interactive
© www.soinside.com 2019 - 2024. All rights reserved.