Loading source
Pulling the file list, source metadata, and syntax-aware rendering for this listing.
Source from repo
Implement Flutter animations: implicit, explicit, hero, staggered, and physics-based with a decision tree guide.
Files
Skill
Size
Entrypoint
Format
Open file
Syntax-highlighted preview of this file as included in the skill package.
assets/templates/implicit_animation.dart
1import 'package:flutter/material.dart';23/// Implicit animation example showing basic fade animation4///5/// This example demonstrates:6/// - AnimatedOpacity for fade in/out7/// - State-driven animation triggers8/// - Simple, declarative animation code910void main() => runApp(const ImplicitAnimationApp());1112class ImplicitAnimationApp extends StatelessWidget {13const ImplicitAnimationApp({super.key});1415@override16Widget build(BuildContext context) {17return MaterialApp(18title: 'Implicit Animation',19theme: ThemeData(20colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),21),22home: const FadeExample(),23);24}25}2627class FadeExample extends StatefulWidget {28const FadeExample({super.key});2930@override31State<FadeExample> createState() => _FadeExampleState();32}3334class _FadeExampleState extends State<FadeExample> {35bool _visible = true;3637@override38Widget build(BuildContext context) {39return Scaffold(40appBar: AppBar(title: const Text('Implicit Fade')),41body: Center(42child: Column(43mainAxisAlignment: MainAxisAlignment.center,44children: [45AnimatedOpacity(46opacity: _visible ? 1.0 : 0.0,47duration: const Duration(milliseconds: 500),48curve: Curves.easeInOut,49child: const FlutterLogo(size: 100),50),51const SizedBox(height: 20),52ElevatedButton(53onPressed: () => setState(() => _visible = !_visible),54child: Text(_visible ? 'Fade Out' : 'Fade In'),55),56],57),58),59);60}61}6263/// AnimatedContainer example - animating multiple properties64class AnimatedContainerExample extends StatefulWidget {65const AnimatedContainerExample({super.key});6667@override68State<AnimatedContainerExample> createState() =>69_AnimatedContainerExampleState();70}7172class _AnimatedContainerExampleState extends State<AnimatedContainerExample> {73bool _expanded = false;7475@override76Widget build(BuildContext context) {77return Scaffold(78appBar: AppBar(title: const Text('Animated Container')),79body: Center(80child: Column(81mainAxisAlignment: MainAxisAlignment.center,82children: [83AnimatedContainer(84duration: const Duration(milliseconds: 300),85curve: Curves.easeInOut,86width: _expanded ? 200 : 100,87height: _expanded ? 200 : 100,88decoration: BoxDecoration(89color: _expanded ? Colors.blue : Colors.red,90borderRadius: BorderRadius.circular(_expanded ? 20 : 8),91),92child: const FlutterLogo(),93),94const SizedBox(height: 20),95ElevatedButton(96onPressed: () => setState(() => _expanded = !_expanded),97child: Text(_expanded ? 'Shrink' : 'Expand'),98),99],100),101),102);103}104}105106/// TweenAnimationBuilder example - custom tween without boilerplate107class TweenAnimationBuilderExample extends StatefulWidget {108const TweenAnimationBuilderExample({super.key});109110@override111State<TweenAnimationBuilderExample> createState() =>112_TweenAnimationBuilderExampleState();113}114115class _TweenAnimationBuilderExampleState116extends State<TweenAnimationBuilderExample> {117bool _animated = false;118119@override120Widget build(BuildContext context) {121return Scaffold(122appBar: AppBar(title: const Text('Tween Animation Builder')),123body: Center(124child: Column(125mainAxisAlignment: MainAxisAlignment.center,126children: [127TweenAnimationBuilder<double>(128tween: Tween<double>(begin: 0, end: 1),129duration: const Duration(seconds: 1),130curve: Curves.easeInOut,131builder: (context, value, child) {132return Opacity(133opacity: value,134child: Transform.scale(scale: value, child: child),135);136},137child: const FlutterLogo(size: 100),138),139const SizedBox(height: 20),140ElevatedButton(141onPressed: () => setState(() => _animated = !_animated),142child: const Text('Animate'),143),144],145),146),147);148}149}150