| // Copyright 2014 The Flutter Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| // Flutter code sample for [AnimatedIcon]. |
| |
| import 'package:flutter/material.dart'; |
| |
| void main() { |
| runApp(const AnimatedIconApp()); |
| } |
| |
| class AnimatedIconApp extends StatelessWidget { |
| const AnimatedIconApp({super.key}); |
| |
| @override |
| Widget build(BuildContext context) { |
| return MaterialApp( |
| theme: ThemeData( |
| colorSchemeSeed: const Color(0xff6750a4), |
| useMaterial3: true, |
| ), |
| home: const Scaffold( |
| body: AnimatedIconExample(), |
| ), |
| ); |
| } |
| } |
| |
| class AnimatedIconExample extends StatefulWidget { |
| const AnimatedIconExample({super.key}); |
| |
| @override |
| State<AnimatedIconExample> createState() => _AnimatedIconExampleState(); |
| } |
| |
| class _AnimatedIconExampleState extends State<AnimatedIconExample> with SingleTickerProviderStateMixin { |
| late AnimationController controller; |
| late Animation<double> animation; |
| |
| @override |
| void initState() { |
| super.initState(); |
| controller = AnimationController( |
| vsync: this, |
| duration: const Duration(seconds: 2), |
| )..forward() |
| ..repeat(reverse: true); |
| animation = Tween<double>(begin: 0.0, end: 1.0).animate(controller); |
| } |
| |
| @override |
| void dispose() { |
| controller.dispose(); |
| super.dispose(); |
| } |
| |
| @override |
| Widget build(BuildContext context) { |
| return Scaffold( |
| body: Center( |
| child: AnimatedIcon( |
| icon: AnimatedIcons.menu_arrow, |
| progress: animation, |
| size: 72.0, |
| semanticLabel: 'Show menu', |
| ), |
| ), |
| ); |
| } |
| } |