diff --git a/packages/flutter/lib/src/widgets/transitions.dart b/packages/flutter/lib/src/widgets/transitions.dart index c696131a40..6278378904 100644 --- a/packages/flutter/lib/src/widgets/transitions.dart +++ b/packages/flutter/lib/src/widgets/transitions.dart @@ -2,9 +2,11 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +import 'dart:math' as math; + import 'package:flutter/animation.dart'; -import 'package:vector_math/vector_math_64.dart' show Matrix4; import 'package:flutter/rendering.dart'; +import 'package:vector_math/vector_math_64.dart' show Matrix4; import 'basic.dart'; import 'framework.dart'; @@ -90,6 +92,29 @@ class SlideTransition extends TransitionWithChild { } } +class RotationTransition extends TransitionWithChild { + RotationTransition({ + Key key, + this.turns, + PerformanceView performance, + Widget child + }) : super(key: key, + performance: performance, + child: child); + + final AnimatedValue turns; + + Widget buildWithChild(BuildContext context, Widget child) { + performance.updateVariable(turns); + Matrix4 transform = new Matrix4.rotationZ(turns.value * math.PI * 2.0); + return new Transform( + transform: transform, + alignment: const FractionalOffset(0.5, 0.5), + child: child + ); + } +} + class FadeTransition extends TransitionWithChild { FadeTransition({ Key key,