Les documents Flutter montrent un exemple de rotation d'un "div" de 15 degrés, à la fois pour le code HTML/CSS et Flutter:
Le code Flutter est:
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),
),
),
);
Et les parties pertinentes sont new Transform
Et alignment: FractionalOffset.center
Et transform: new Matrix4.identity()..rotateZ(15 * 3.1415927 / 180)
Je suis curieux, existe-t-il un moyen plus simple de faire pivoter un Container
dans Flutter? Y a-t-il un raccourci pour le cas des "15 degrés"?
Merci!
Dans les applications mobiles, je pense qu'il est assez rare que les choses commencent à tourner de 15 degrés et y restent pour toujours. C'est peut-être pourquoi le support de Flutter pour la rotation est meilleur si vous prévoyez d'ajuster la rotation au fil du temps.
Cela semble exagéré, mais un RotationTransition
avec un AlwaysStoppedAnimation
accomplirait exactement ce que vous voulez.
new RotationTransition(
turns: new AlwaysStoppedAnimation(15 / 360),
child: new Text("Lorem ipsum"),
)
Si vous souhaitez faire pivoter quelque chose de 90, 180 ou 270 degrés, vous pouvez utiliser un RotatedBox
.
new RotatedBox(
quarterTurns: 1,
child: new Text("Lorem ipsum")
)
Si vous travaillez avec un canevas ( comme dans un widget CustomPaint ), vous pouvez faire pivoter de 15 degrés comme ceci:
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;
}
}
Cependant, si vous faites quelque chose de simple, j'utiliserais un RotatedBox
ou Transform.rotate
comme le suggèrent les autres réponses.