当带有它的对象旋转时,CustomPainter 的工作方式不同

问题描述

一个 SVG 地图和一个 CustomPainter,可以绘制从一个点到另一个点的路线。问题是当 quarterTurns: 1 在 RotatedBox Widget 中时,路由是正确构建的,但是当 quarterTurns: 0 在同一个 RotatedBox 中时,路由以完全不同的错误方式构建。

路线是借助外部服务器上的数据构建的,路线的数据对于verticallyhorizontally旋转地图都是完全相同的。但是,路线的绘制方式不同。

如果您有任何想法如何修复此错误并使路线在垂直和水平旋转的地图上相同,请帮忙吗?

部分代码如下,带有路线差异的截图链接horizontalvertical

我尝试删除 InteractiveViewer,但没有帮助。重复一遍,服务器给出的纵横地图路线相同,所以问题肯定出在app的绘图上。

var mapRoutePainter = InrouteMapPainter(); // CustomPainter responsible for route building
var mapAssetPaint = CustomPaint();

var mapAsset = SvgPicture.asset(
'assets/svg/test.svg',allowDrawingOutsideViewBox: false,);

Column(
          children: <Widget>[
            RotatedBox(
              quarterTurns: 0,// the line responsible for rotation
              child: Padding(
                padding: const EdgeInsets.only(
                  top: 50.0,bottom: 50.0,),child: InteractiveViewer(
                  boundaryMargin: EdgeInsets.all(100.0),maxScale: 10.0,child: LayoutBuilder(
                    builder:
                        (BuildContext context,BoxConstraints constraints) {
                      mapAssetPaint = CustomPaint(
                        size: Size(constraints.maxHeight,300),foregroundPainter: mapRoutePainter,child: Transform.scale(
                          alignment: Alignment.center,origin: global["mapScaleOrigin"],scale: global["mapScaler"],child: Transform.translate(
                            offset: Offset(-global["mapOffset"].dx,-global["mapOffset"].dy),child: mapAsset,);
                      return mapAssetPaint;
                    },],

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)