首页 > 解决方案 > Flutter 如何根据 5 星评级旋转图像

问题描述

我只是在旋转我的图像,但我不知道如何根据评级计算度数。我有基于 5 平均 4.5、5,3 这样的我可以如何代表这些评级旋转我的图像

我的代码

                                Positioned(
                                    left: width * 0.072,
                                    bottom: height * 0.067,
                                    child: RotationTransition(
                                      turns: new AlwaysStoppedAnimation(
                                          180 / 360),
                                      child: Image.asset(
                                        'images/Needle.png',
                                        height: height * 0.02,
                                      ),
                                    )),

我想要实现的是这个

在此处输入图像描述

如果评级为 5 图像针将接近蓝色。当它是 4 时,它将接近果岭。像这样的东西。我的图像正在旋转,但我坚持那个计算。

标签: flutterdart

解决方案


由于您已将整个评级系统划分为 5 颗星,并且您有一个半圆(180 度和 3.14 弧度)来表示它,因此您将该半圆划分为 5 个相等的部分,每个部分导致 180/5 = 36 度(0.62 弧度)部分。所以参考那个图像,看起来你的 0 度是从右侧开始的,你可以反转这个逻辑。因此对于 :

1 star : 180 degree = 3.14 radian
2 stars : 180 - 36 = 144 degree = 2.51327 radian
3 stars : 144 - 36 = 108 degree = 1.88496 radian
4 stars : 108 - 36 = 72 degree = 1.25664 radian
5 stars : 72 - 36 = 36 degree = 0.628319 radian

现在使用此计算将箭头指向每个颜色标记的末尾(180 将在红色末尾,144 将在黄色末尾等)。如果要指向每种颜色的中心,可以从每种颜色中减去 18 度。


推荐阅读