【问题标题】:Flutter: Matrix4 to rotate a Container by its center?Flutter:Matrix4 将容器按其中心旋转?
【发布时间】:2019-12-27 00:33:58
【问题描述】:

我有一个AnimatedContainer,我想将它旋转 180 度,并且原点应该在它的中心。

它有一个transform 参数,不幸的是,它要求Matrix4

Flutter 文档中没有对Matrix4 的解释: https://api.flutter.dev/flutter/vector_math_64/Matrix4-class.html

我必须使用什么 Matrix4 来按中心旋转它?

【问题讨论】:

    标签: math flutter


    【解决方案1】:

    无需使用Matrix4 进行简单的 180 度旋转。请改用RotationTransition 包装您的AnimatedContainerRotationTransition 接受一个turns 参数,这是一个Animation<T>,其值可用于表示RotationTransition 的子小部件以弧度为单位的旋转。这样,您可以通过AnimationController 控制旋转动画。查看this example from the Flutter official GitHub 了解更多信息。

    【讨论】:

    • 谢谢,但我没有 AnimationController,我也不打算拥有一个。 AnimatedContainer 不需要 AnimationController,不需要 vsync。它更容易使用。要是我能理解 Matrix4 就好了。
    【解决方案2】:

    我找到了答案,刚做了这个包(做各种变换,不只是按中心旋转):https://pub.dev/packages/matrix4_transform

    var height = 30;
    var width = 30;
    
    AnimatedContainer(
       color: Colors.red, 
       width: width, 
       height: height,
       transform:
         Matrix4Transform()
           .rotateDegrees(180, origin: Offset(width/2, height/2))
           .matrix4,
    );
    

    【讨论】:

    • 完美运行!非常感谢您发布此内容,您保存了我的 *ss!
    猜你喜欢
    • 1970-01-01
    • 2018-04-02
    • 2015-03-04
    • 1970-01-01
    • 1970-01-01
    • 2017-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多