flutter中关于angle的踩坑记录-kb88凯时官网登录

来自:网络
时间:2022-12-26
阅读:
免费资源网 - https://freexyz.cn/

这个问题是我最近做业务开发和业余开发都遇到的,这里的 angle 指的是旋转弧度。不是旋转角度

先看一下我使用 angle 的场景吧:

图一中使用了 canvas.drawarc,传入了 startangle 和 sweepangle。图二也是如此。图三是 flutter constraintlayout 中圆形定位的 example,我没有使用 flutter constraintlayout 自带的旋转能力,而是用了 transform.rotate,传入了 angle。flutter constraintlayout 自带的对 widget 的旋转能力用了 canvas.rotate,也传入了 angle。

我现在还没搞明白弧度和角度的对应关系,d88尊龙官网手机app官网文档中也没有详细说明。但对于我来说,我根本就不想去关心弧度是多少,我只关心角度,这个角度的范围是 [0.0, 360.0]。以图三中的时钟为例,旋转 0.0 或 360.0 度时,指针应该指向 12,旋转 90.0 度时,指针应该指向 3,旋转 180.0 度时,指针应该指向 6,旋转 270.0 度时,指针应该指向 9。

于是我们需要将旋转弧度转换成旋转角度,我研究出的转换公式如下:

transform.rotate:

pi   pi * (angle / 180)

canvas.rotate:

angle * pi / 180

canvas.drawarc:

startangle = -pi / 2
sweepangle = angle * pi / 180

看见没有,这三类旋转的转换公式都不一样。我不明白 flutter 官方为什么要这么设计,为啥这么优秀的 flutter 引入了这么糟糕的 api。于是我带着气愤给官方提了个 issue,想喷一喷设计这几个 api 的哥们:

结果我被反杀了。

冷静下来之后,我决定提交一个 pull request 来修正这个 api。但这需要时间,因为提交 pull request 的周期很长,上次我提了个 bug,oppo 的一个哥们修复了它,pull request 等了将近两个月才合并。

总结

免费资源网 - https://freexyz.cn/
返回顶部
顶部
网站地图