spinning_square.dart 1.18 KB
Newer Older
Ian Hickson's avatar
Ian Hickson committed
1
// Copyright 2014 The Flutter Authors. All rights reserved.
2 3 4 5 6
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

import 'package:flutter/widgets.dart';

7
class SpinningSquare extends StatefulWidget {
8
  const SpinningSquare({super.key});
9

10
  @override
11
  State<SpinningSquare> createState() => _SpinningSquareState();
12 13
}

14
class _SpinningSquareState extends State<SpinningSquare> with SingleTickerProviderStateMixin {
15 16 17 18 19 20 21
  // We use 3600 milliseconds instead of 1800 milliseconds because 0.0 -> 1.0
  // represents an entire turn of the square whereas in the other examples
  // we used 0.0 -> math.pi, which is only half a turn.
  late final AnimationController _animation = AnimationController(
    duration: const Duration(milliseconds: 3600),
    vsync: this,
  )..repeat();
22

23 24 25 26 27 28
  @override
  void dispose() {
    _animation.dispose();
    super.dispose();
  }

29
  @override
30
  Widget build(BuildContext context) {
31
    return RotationTransition(
32
      turns: _animation,
33
      child: Container(
34 35
        width: 200.0,
        height: 200.0,
36
        color: const Color(0xFF00FF00),
37
      ),
38 39 40 41 42
    );
  }
}

void main() {
43
  runApp(const Center(child: SpinningSquare()));
44
}