From 088b6062fd018ae27092b9ee689fb46d12690685 Mon Sep 17 00:00:00 2001 From: Matt Sullivan Date: Wed, 20 Feb 2019 15:50:34 -0800 Subject: [PATCH] Added sample code to AnimatedWidget (#27803) * Added sample to AnimatedWidget * Updated AnimatedWidget example to use listenable from parent * Made progress private and changed widget name --- .../flutter/lib/src/widgets/transitions.dart | 52 +++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/packages/flutter/lib/src/widgets/transitions.dart b/packages/flutter/lib/src/widgets/transitions.dart index ac33e7b8496..fabeb13201e 100644 --- a/packages/flutter/lib/src/widgets/transitions.dart +++ b/packages/flutter/lib/src/widgets/transitions.dart @@ -23,6 +23,58 @@ export 'package:flutter/rendering.dart' show RelativeRect; /// [AnimatedWidget] is most useful for widgets that are otherwise stateless. To /// use [AnimatedWidget], simply subclass it and implement the build function. /// +///{@tool sample} +/// +/// This code defines a widget called `Spinner` that spins a green square +/// continually. It is built with an [AnimatedWidget]. +/// +/// ```dart +/// class Spinner extends StatefulWidget { +/// @override +/// _SpinnerState createState() => _SpinnerState(); +/// } +/// +/// class _SpinnerState extends State with TickerProviderStateMixin { +/// AnimationController _controller; +/// +/// @override +/// void initState() { +/// super.initState(); +/// _controller = AnimationController( +/// duration: const Duration(seconds: 10), +/// vsync: this, +/// )..repeat(); +/// } +/// +/// @override +/// void dispose() { +/// _controller.dispose(); +/// super.dispose(); +/// } +/// +/// @override +/// Widget build(BuildContext context) { +/// return SpinningContainer(controller: _controller); +/// } +/// } +/// +/// class SpinningContainer extends AnimatedWidget { +/// const SpinningContainer({Key key, AnimationController controller}) +/// : super(key: key, listenable: controller); +/// +/// Animation get _progress => listenable; +/// +/// @override +/// Widget build(BuildContext context) { +/// return Transform.rotate( +/// angle: _progress.value * 2.0 * math.pi, +/// child: Container(width: 200.0, height: 200.0, color: Colors.green), +/// ); +/// } +/// } +/// ``` +/// {@end-tool} +/// /// For more complex case involving additional state, consider using /// [AnimatedBuilder]. ///