Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dart 如何在颤振中旋转15度?_Dart_Flutter - Fatal编程技术网

Dart 如何在颤振中旋转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:

颤振文档显示了将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: 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;
  }
}