Dart 如何在颤振中旋转15度?
颤振文档显示了将HTML/CSS和颤振代码的“div”旋转15度的示例: 颤振代码为:Dart 如何在颤振中旋转15度?,dart,flutter,Dart,Flutter,颤振文档显示了将HTML/CSS和颤振代码的“div”旋转15度的示例: 颤振代码为: var container = new Container( // gray box child: new Center( child: new Transform( child: new Text( "Lorem ipsum", ), alignment: FractionalOffset.center, transform:
var container = new Container( // gray box
child: new Center(
child: new Transform(
child: new Text(
"Lorem ipsum",
),
alignment: FractionalOffset.center,
transform: new Matrix4.identity()
..rotateZ(15 * 3.1415927 / 180),
),
),
);
相关部分是new Transform
和alignment:partitionaloffset.center
和Transform:new Matrix4.identity()…rotateZ(15*3.1415927/180)
我很好奇,有没有一种更简单的方法可以让容器在颤振中旋转?有没有“15度”的缩写
谢谢 在移动应用程序中,我认为很少有东西一开始就旋转15度,然后永远停留在那里。因此,如果您计划随时间调整旋转,这可能就是为什么颤振对旋转的支持更好的原因 这感觉有点过分了,但是一个有一个的会完全实现你想要的 如果要将某物旋转90度、180度或270度,可以使用
您可以使用
Transform.rotate
旋转小部件。我使用文本
并将其旋转45˚(π/4)
例如:
导入'dart:math'作为数学;
变换。旋转(
角度:-math.pi/4,
子项:Text(“Text”),
)
如果使用画布(),可以像这样旋转15度:
import 'dart:math' as math;
class MyPainter extends CustomPainter {
@override
void paint(Canvas canvas, Size size) {
canvas.save();
// rotate the canvas
final degrees = 15;
final radians = degrees * math.pi / 180;
canvas.rotate(radians);
// draw the text
final textStyle = TextStyle(color: Colors.black, fontSize: 30);
final textSpan = TextSpan(text: 'Hello, world.', style: textStyle);
TextPainter(text: textSpan, textDirection: TextDirection.ltr)
..layout(minWidth: 0, maxWidth: size.width)
..paint(canvas, Offset(0, 0));
canvas.restore();
}
@override
bool shouldRepaint(CustomPainter old) {
return false;
}
}
但是,如果您正在做一些简单的事情,那么我将使用
RotatedBox
或Transform.rotate
,正如其他答案所建议的那样。您知道使用RotationTransition与Transform的性能影响是什么吗?性能差异应该可以忽略不计。如果你看看引擎盖下面,旋转过渡的代码几乎完全相同。唯一的区别是将构造几个额外的对象(RotationTransition和AlwaysStoppedAnimation),这在Dart中非常便宜。因为动画永远不会改变,所以RotationTransition只会构建一次。注意:RotatedBox小部件四分之一相当于0、90、180、270度,不幸的是不适合其他角度(例如15°或45°),甚至一个答案都不起作用!有解决办法吗?
new RotatedBox(
quarterTurns: 1,
child: new Text("Lorem ipsum")
)
import 'dart:math' as math;
class MyPainter extends CustomPainter {
@override
void paint(Canvas canvas, Size size) {
canvas.save();
// rotate the canvas
final degrees = 15;
final radians = degrees * math.pi / 180;
canvas.rotate(radians);
// draw the text
final textStyle = TextStyle(color: Colors.black, fontSize: 30);
final textSpan = TextSpan(text: 'Hello, world.', style: textStyle);
TextPainter(text: textSpan, textDirection: TextDirection.ltr)
..layout(minWidth: 0, maxWidth: size.width)
..paint(canvas, Offset(0, 0));
canvas.restore();
}
@override
bool shouldRepaint(CustomPainter old) {
return false;
}
}