spinning_square.dart 1.21 KB
Newer Older
1 2 3 4 5 6
// Copyright 2015 The Chromium Authors. All rights reserved.
// 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
  @override
9
  _SpinningSquareState createState() => _SpinningSquareState();
10 11
}

12
class _SpinningSquareState extends State<SpinningSquare> with SingleTickerProviderStateMixin {
13 14
  AnimationController _animation;

15
  @override
16 17 18 19
  void initState() {
    super.initState();
    // 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
20
    // we used 0.0 -> math.pi, which is only half a turn.
21
    _animation = AnimationController(
22 23
      duration: const Duration(milliseconds: 3600),
      vsync: this,
24 25 26
    )..repeat();
  }

27 28 29 30 31 32
  @override
  void dispose() {
    _animation.dispose();
    super.dispose();
  }

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

void main() {
47
  runApp(Center(child: SpinningSquare()));
48
}