在dart / Flutter中使用Transform.Rotate时遇到了一些问题。 我已经设置好代码,以便可以通过手势旋转图像。但是,一旦我旋转图像一次并放开并继续旋转,图像就会重置回其原始位置。
这里显示的是同一问题:Rotation gesture produces undesired rotation
这里的解决方案是将转换保存在变量中。有什么方法可以将转换保存到Dart / Flutter中的变量中?
同样理想的情况是我可以对旋转进行一些动画处理,因此略微延迟,因为现在它可以立即对旋转做出响应。如果这部分不清楚,请让我知道!
欢迎提出任何建议!!!
编辑:
此处的代码= https://github.com/RobinFarmer/rotation
我已将我的完整代码添加到Github中,我能够旋转Box One中的文本,放开该框时它确实会停留在该位置,但是当我想要继续拖动时,它将重置它。这与在新的旋转上总是保持0的δ角有关,但是我不确定如何使它继续先前的旋转。
我希望这是有道理的。
期待答复。
答案 0 :(得分:0)
您基本上想保存小部件的状态,所以我认为您需要将其包装在StatefulWidget中才能执行此操作。 (https://www.youtube.com/watch?v=AqCMFXEmf3w)
要使动画平滑,您可以尝试使用AnimatedContainer吗? 我自己没有使用过,但我认为它应该是您所需要的! (https://www.youtube.com/watch?v=yI-8QHpGIP4)
编辑
好的,我为您服务。
Offset vector;
double startingAngle;
double deltaAngle = 0.0;
double finalAngle = 0.0;
// store the final angle of the object
double finalObjectAngle = 0.0;
void _onPanStart(DragStartDetails details) {
_polarCoordFromGlobalOffset(details.globalPosition);
startingAngle = vector.direction;
print('START = $startingAngle ===================================');
}
void _onPanUpdate(DragUpdateDetails details) {
_polarCoordFromGlobalOffset(details.globalPosition);
setState(() {
// HERE you should use the finalObjectAngle
deltaAngle = vector.direction - startingAngle + finalObjectAngle;
finalAngle = deltaAngle;
});
}
void _onPanEnd(DragEndDetails details) {
finalAngle = deltaAngle;
// Save the finalAngle of the object
finalObjectAngle = finalAngle;
print('End = $finalAngle ===================================');
}