mirror of
https://github.com/flutter/flutter.git
synced 2025-06-03 00:51:18 +00:00

This requires all AnimationController objects to be given a TickerProvider, a class that can create the Ticker. It also provides some nice mixins for people who want to have their State provide a TickerProvider. And a schedulerTickerProvider for those cases where you just want to see your battery burn. Also, we now enforce destruction order for elements.
51 lines
1.3 KiB
Dart
51 lines
1.3 KiB
Dart
// 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';
|
|
|
|
class SpinningSquare extends StatefulWidget {
|
|
@override
|
|
_SpinningSquareState createState() => new _SpinningSquareState();
|
|
}
|
|
|
|
class _SpinningSquareState extends State<SpinningSquare> with SingleTickerProviderStateMixin {
|
|
AnimationController _animation;
|
|
|
|
@override
|
|
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
|
|
// we used 0.0 -> math.PI, which is only half a turn.
|
|
_animation = new AnimationController(
|
|
duration: const Duration(milliseconds: 3600),
|
|
vsync: this,
|
|
)..repeat();
|
|
}
|
|
|
|
@override
|
|
void dispose() {
|
|
_animation.dispose();
|
|
super.dispose();
|
|
}
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return new RotationTransition(
|
|
turns: _animation,
|
|
child: new Container(
|
|
width: 200.0,
|
|
height: 200.0,
|
|
decoration: const BoxDecoration(
|
|
backgroundColor: const Color(0xFF00FF00)
|
|
)
|
|
)
|
|
);
|
|
}
|
|
}
|
|
|
|
void main() {
|
|
runApp(new Center(child: new SpinningSquare()));
|
|
}
|