mirror of
https://github.com/flutter/samples.git
synced 2026-03-22 04:17:50 +00:00
address code review comments
This commit is contained in:
@@ -1,12 +1,31 @@
|
||||
# Animation Samples
|
||||
Sample apps that showcasing Flutter's animation features
|
||||
|
||||
## Basics
|
||||
## Goals
|
||||
|
||||
- Demonstrate the building blocks for animations and how they work together
|
||||
- Provide samples for common patterns and use-cases
|
||||
|
||||
## Samples
|
||||
|
||||
### Basics
|
||||
|
||||
Building blocks and patterns
|
||||
|
||||
**AnimationControllerDemo**
|
||||
Demonstrates how to use an `AnimationController`.
|
||||
|
||||
### Misc
|
||||
|
||||
## Misc
|
||||
**ExpandCard**
|
||||
Other uses-cases and examples
|
||||
|
||||
**ExpandCardDemo**
|
||||
Demonstrates how to use `AnimatedCrossFade` to fade between two widgets and
|
||||
change the size.
|
||||
|
||||
## Other Resources
|
||||
|
||||
- [Introduction to animations](https://flutter.dev/docs/development/ui/animations)
|
||||
- [Animation widgets](https://flutter.dev/docs/development/ui/widgets/animation)
|
||||
- [Flutter cookbook - Animations](https://flutter.dev/docs/cookbook/animation)
|
||||
- [Animations tutorial](https://flutter.dev/docs/development/ui/animations/tutorial)
|
||||
|
||||
@@ -2,40 +2,39 @@ import 'package:flutter/material.dart';
|
||||
import 'src/basics/animation_controller_demo.dart';
|
||||
import 'src/misc/expand_card.dart';
|
||||
|
||||
void main() => runApp(AnimationsSamples());
|
||||
void main() => runApp(AnimationSamples());
|
||||
|
||||
class Demo {
|
||||
final String name;
|
||||
final String route;
|
||||
final WidgetBuilder builder;
|
||||
|
||||
Demo(this.name, this.route, this.builder);
|
||||
const Demo(this.name, this.route, this.builder);
|
||||
}
|
||||
|
||||
List<Demo> basicDemos = [
|
||||
final basicDemos = [
|
||||
Demo('Animation Controller', AnimationControllerDemo.routeName,
|
||||
(context) => AnimationControllerDemo()),
|
||||
];
|
||||
|
||||
List<Demo> miscDemos = [
|
||||
final miscDemos = [
|
||||
Demo('Expandable Card', ExpandCardDemo.routeName,
|
||||
(context) => ExpandCardDemo()),
|
||||
];
|
||||
|
||||
Map<String, WidgetBuilder> basicDemoRoutes = Map.fromEntries(
|
||||
basicDemos.map((d) => MapEntry(d.route, d.builder)));
|
||||
final basicDemoRoutes =
|
||||
Map.fromEntries(basicDemos.map((d) => MapEntry(d.route, d.builder)));
|
||||
|
||||
Map<String, WidgetBuilder> miscDemoRoutes = Map.fromEntries(
|
||||
miscDemos.map((d) => MapEntry(d.route, d.builder)));
|
||||
final miscDemoRoutes =
|
||||
Map.fromEntries(miscDemos.map((d) => MapEntry(d.route, d.builder)));
|
||||
|
||||
Map<String, WidgetBuilder> allRoutes = <String, WidgetBuilder>{
|
||||
final allRoutes = <String, WidgetBuilder>{
|
||||
...basicDemoRoutes,
|
||||
...miscDemoRoutes,
|
||||
};
|
||||
|
||||
class AnimationsSamples extends StatelessWidget {
|
||||
class AnimationSamples extends StatelessWidget {
|
||||
Widget build(BuildContext context) {
|
||||
|
||||
return MaterialApp(
|
||||
title: 'Animations Samples',
|
||||
theme: ThemeData(
|
||||
@@ -48,19 +47,19 @@ class AnimationsSamples extends StatelessWidget {
|
||||
}
|
||||
|
||||
class HomePage extends StatelessWidget {
|
||||
final TextStyle _headerStyle =
|
||||
TextStyle(fontWeight: FontWeight.bold, fontSize: 24);
|
||||
|
||||
Widget build(BuildContext context) {
|
||||
final headerStyle =
|
||||
Theme.of(context).textTheme.title;
|
||||
return Scaffold(
|
||||
appBar: AppBar(
|
||||
title: Text('Animation Examples'),
|
||||
),
|
||||
body: ListView(
|
||||
children: <Widget>[
|
||||
ListTile(title: Text('Basics', style: _headerStyle)),
|
||||
children: [
|
||||
ListTile(title: Text('Basics', style: headerStyle)),
|
||||
...basicDemos.map((d) => DemoTile(d)),
|
||||
ListTile(title: Text('Misc', style: _headerStyle)),
|
||||
ListTile(title: Text('Misc', style: headerStyle)),
|
||||
...miscDemos.map((d) => DemoTile(d)),
|
||||
],
|
||||
),
|
||||
|
||||
@@ -33,18 +33,16 @@ class _AnimationControllerDemoState extends State<AnimationControllerDemo>
|
||||
body: Center(
|
||||
child: Column(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
children: <Widget>[
|
||||
children: [
|
||||
ConstrainedBox(
|
||||
constraints: BoxConstraints(maxWidth: 200),
|
||||
child: Text('${controller.value.toStringAsFixed(2)}',
|
||||
style: TextStyle(fontSize: 24)),
|
||||
),
|
||||
MaterialButton(
|
||||
color: Theme.of(context).primaryColor,
|
||||
child: Text(
|
||||
'animate',
|
||||
style: TextStyle(color: Colors.white),
|
||||
'${controller.value.toStringAsFixed(2)}',
|
||||
style: Theme.of(context).textTheme.display3,
|
||||
),
|
||||
),
|
||||
RaisedButton(
|
||||
child: Text('animate'),
|
||||
onPressed: () {
|
||||
if (controller.status == AnimationStatus.completed) {
|
||||
controller.reverse();
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
class ExpandCardDemo extends StatelessWidget {
|
||||
static String routeName = '/expand_card';
|
||||
static const String routeName = '/expand_card';
|
||||
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
@@ -24,10 +24,6 @@ class _ExpandCardState extends State<ExpandCard>
|
||||
|
||||
double get size => expanded ? 200 : 100;
|
||||
|
||||
void initState() {
|
||||
super.initState();
|
||||
}
|
||||
|
||||
void toggleExpanded() {
|
||||
setState(() {
|
||||
expanded = !expanded;
|
||||
|
||||
Reference in New Issue
Block a user