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

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

Flutter 中关于 angle 的坑

Flutter 中关于 angle 的坑

Flutter 中关于 angle 的坑

图一中使用了 canflutter开发的app有哪些vas.drawArc,指针万用表读数图解传入了 startAngleandroid下载 和 sweepAngle。图二也是如此。图三是 Flutter ConstraintLayout 中圆形定位的 eandroid手机xample,我没有使用 Flutter ConstraintLayout 自带的旋转能力,而是用了 Transform.rotate,传入了 angle。Flutter Constraint指针万用表怎么读数Layout 自带的对 Wi弧度公式dg指针万用表怎么读数et 的旋转能力用了 canvas.rotate,也传入了 angle。

我现在还没搞明白指针是什么弧度和角度的对应关系,官网文档中也没有详细说明。但对于我指针是什么来说,我根本就不想去关心弧度是多少,我只Flutter关心角度,这个角度的范围是 [0.0, 360.0]。以图三中的时钟为例指针是什么,旋转 0.0 或 360.0 度时,指针应该指向 12,旋转 90.0 度时,canvas软件指针应该指向 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。于是我带着气愤给官方提了个 Is弧度制与角度制的换算公式sue,想喷一喷设计这几个 API 的哥们:

Flutter 中关于 angle 的坑

结果我被反杀了。

冷静下来之后,我决定提交一个 Pull指针数组 Rflutter面试题equest 来修正这个 APFlutterI。但这需要时间,因为提交 Pull Request 的周期很长,上次我提了个 bug,Oppo 的一个哥们修复了它,Pull Request 等了将近两个月才合并。

好了,今天就讲这么多吧,你以后很可能会canvas平台canvas翻译到需要旋转的场景,赶紧收藏起来吧!我是中国第一位 Andrflutter开发的app有哪些oi指针c语言d &amflutter菜鸟教程p; Flutter 双料 GDFE,欢迎关注我的公众号 FlutterFirst,带你起飞!

发表评论

提供最优质的资源集合

立即查看 了解详情