mirror of
https://github.com/flutter/samples.git
synced 2025-11-08 13:58:47 +00:00
Migrate animations to go_router (#1521)
This commit is contained in:
@@ -6,6 +6,8 @@ import 'dart:io';
|
|||||||
|
|
||||||
import 'package:flutter/foundation.dart';
|
import 'package:flutter/foundation.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:go_router/go_router.dart';
|
||||||
|
|
||||||
// ignore: depend_on_referenced_packages
|
// ignore: depend_on_referenced_packages
|
||||||
import 'package:window_size/window_size.dart';
|
import 'package:window_size/window_size.dart';
|
||||||
|
|
||||||
@@ -147,29 +149,38 @@ final miscDemos = [
|
|||||||
builder: (context) => const CurvedAnimationDemo()),
|
builder: (context) => const CurvedAnimationDemo()),
|
||||||
];
|
];
|
||||||
|
|
||||||
final basicDemoRoutes =
|
final router = GoRouter(
|
||||||
Map.fromEntries(basicDemos.map((d) => MapEntry(d.route, d.builder)));
|
routes: [
|
||||||
|
GoRoute(
|
||||||
final miscDemoRoutes =
|
path: '/',
|
||||||
Map.fromEntries(miscDemos.map((d) => MapEntry(d.route, d.builder)));
|
builder: (context, state) => const HomePage(),
|
||||||
|
routes: [
|
||||||
final allRoutes = <String, WidgetBuilder>{
|
for (final demo in basicDemos)
|
||||||
...basicDemoRoutes,
|
GoRoute(
|
||||||
...miscDemoRoutes,
|
path: demo.route,
|
||||||
};
|
builder: (context, state) => demo.builder(context),
|
||||||
|
),
|
||||||
|
for (final demo in miscDemos)
|
||||||
|
GoRoute(
|
||||||
|
path: demo.route,
|
||||||
|
builder: (context, state) => demo.builder(context),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
],
|
||||||
|
);
|
||||||
|
|
||||||
class AnimationSamples extends StatelessWidget {
|
class AnimationSamples extends StatelessWidget {
|
||||||
const AnimationSamples({super.key});
|
const AnimationSamples({super.key});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return MaterialApp(
|
return MaterialApp.router(
|
||||||
title: 'Animation Samples',
|
title: 'Animation Samples',
|
||||||
theme: ThemeData(
|
theme: ThemeData(
|
||||||
primarySwatch: Colors.deepPurple,
|
primarySwatch: Colors.deepPurple,
|
||||||
),
|
),
|
||||||
routes: allRoutes,
|
routerConfig: router,
|
||||||
home: const HomePage(),
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -206,7 +217,7 @@ class DemoTile extends StatelessWidget {
|
|||||||
return ListTile(
|
return ListTile(
|
||||||
title: Text(demo.name),
|
title: Text(demo.name),
|
||||||
onTap: () {
|
onTap: () {
|
||||||
Navigator.pushNamed(context, demo.route);
|
context.go('/${demo.route}');
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ Color generateColor() => Color(0xFFFFFFFF & Random().nextInt(0xFFFFFFFF));
|
|||||||
|
|
||||||
class AnimatedContainerDemo extends StatefulWidget {
|
class AnimatedContainerDemo extends StatefulWidget {
|
||||||
const AnimatedContainerDemo({super.key});
|
const AnimatedContainerDemo({super.key});
|
||||||
static String routeName = '/basics/01_animated_container';
|
static String routeName = 'basics/01_animated_container';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
State<AnimatedContainerDemo> createState() => _AnimatedContainerDemoState();
|
State<AnimatedContainerDemo> createState() => _AnimatedContainerDemoState();
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import 'package:flutter/material.dart';
|
|||||||
|
|
||||||
class PageRouteBuilderDemo extends StatelessWidget {
|
class PageRouteBuilderDemo extends StatelessWidget {
|
||||||
const PageRouteBuilderDemo({super.key});
|
const PageRouteBuilderDemo({super.key});
|
||||||
static const String routeName = '/basics/page_route_builder';
|
static const String routeName = 'basics/page_route_builder';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import 'package:flutter/material.dart';
|
|||||||
|
|
||||||
class AnimationControllerDemo extends StatefulWidget {
|
class AnimationControllerDemo extends StatefulWidget {
|
||||||
const AnimationControllerDemo({super.key});
|
const AnimationControllerDemo({super.key});
|
||||||
static const String routeName = '/basics/animation_controller';
|
static const String routeName = 'basics/animation_controller';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
State<AnimationControllerDemo> createState() =>
|
State<AnimationControllerDemo> createState() =>
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import 'package:flutter/material.dart';
|
|||||||
|
|
||||||
class TweenDemo extends StatefulWidget {
|
class TweenDemo extends StatefulWidget {
|
||||||
const TweenDemo({super.key});
|
const TweenDemo({super.key});
|
||||||
static const String routeName = '/basics/tweens';
|
static const String routeName = 'basics/tweens';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
State<TweenDemo> createState() => _TweenDemoState();
|
State<TweenDemo> createState() => _TweenDemoState();
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import 'package:flutter/material.dart';
|
|||||||
|
|
||||||
class AnimatedBuilderDemo extends StatefulWidget {
|
class AnimatedBuilderDemo extends StatefulWidget {
|
||||||
const AnimatedBuilderDemo({super.key});
|
const AnimatedBuilderDemo({super.key});
|
||||||
static const String routeName = '/basics/animated_builder';
|
static const String routeName = 'basics/animated_builder';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
State<AnimatedBuilderDemo> createState() => _AnimatedBuilderDemoState();
|
State<AnimatedBuilderDemo> createState() => _AnimatedBuilderDemoState();
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ class TypewriterTween extends Tween<String> {
|
|||||||
|
|
||||||
class CustomTweenDemo extends StatefulWidget {
|
class CustomTweenDemo extends StatefulWidget {
|
||||||
const CustomTweenDemo({super.key});
|
const CustomTweenDemo({super.key});
|
||||||
static const String routeName = '/basics/custom_tweens';
|
static const String routeName = 'basics/custom_tweens';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
State<CustomTweenDemo> createState() => _CustomTweenDemoState();
|
State<CustomTweenDemo> createState() => _CustomTweenDemoState();
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import 'package:flutter/material.dart';
|
|||||||
|
|
||||||
class TweenSequenceDemo extends StatefulWidget {
|
class TweenSequenceDemo extends StatefulWidget {
|
||||||
const TweenSequenceDemo({super.key});
|
const TweenSequenceDemo({super.key});
|
||||||
static const String routeName = '/basics/chaining_tweens';
|
static const String routeName = 'basics/chaining_tweens';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
State<TweenSequenceDemo> createState() => _TweenSequenceDemoState();
|
State<TweenSequenceDemo> createState() => _TweenSequenceDemoState();
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import 'package:flutter/material.dart';
|
|||||||
// for examples of other common animated widgets.
|
// for examples of other common animated widgets.
|
||||||
class FadeTransitionDemo extends StatefulWidget {
|
class FadeTransitionDemo extends StatefulWidget {
|
||||||
const FadeTransitionDemo({super.key});
|
const FadeTransitionDemo({super.key});
|
||||||
static const String routeName = '/basics/fade_transition';
|
static const String routeName = 'basics/fade_transition';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
State<FadeTransitionDemo> createState() => _FadeTransitionDemoState();
|
State<FadeTransitionDemo> createState() => _FadeTransitionDemoState();
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import 'package:flutter/material.dart';
|
|||||||
|
|
||||||
class AnimatedListDemo extends StatefulWidget {
|
class AnimatedListDemo extends StatefulWidget {
|
||||||
const AnimatedListDemo({super.key});
|
const AnimatedListDemo({super.key});
|
||||||
static String routeName = '/misc/animated_list';
|
static String routeName = 'misc/animated_list';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
State<AnimatedListDemo> createState() => _AnimatedListDemoState();
|
State<AnimatedListDemo> createState() => _AnimatedListDemoState();
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import 'package:flutter/material.dart';
|
|||||||
|
|
||||||
class AnimatedPositionedDemo extends StatefulWidget {
|
class AnimatedPositionedDemo extends StatefulWidget {
|
||||||
const AnimatedPositionedDemo({super.key});
|
const AnimatedPositionedDemo({super.key});
|
||||||
static String routeName = '/basics/09_animated_positioned';
|
static String routeName = 'misc/animated_positioned';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
State<AnimatedPositionedDemo> createState() => _AnimatedPositionedDemoState();
|
State<AnimatedPositionedDemo> createState() => _AnimatedPositionedDemoState();
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ Widget generateContainer(int keyCount) => Container(
|
|||||||
|
|
||||||
class AnimatedSwitcherDemo extends StatefulWidget {
|
class AnimatedSwitcherDemo extends StatefulWidget {
|
||||||
const AnimatedSwitcherDemo({super.key});
|
const AnimatedSwitcherDemo({super.key});
|
||||||
static String routeName = '/basics/10_animated_switcher';
|
static String routeName = 'misc/animated_switcher';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
State<AnimatedSwitcherDemo> createState() => _AnimatedSwitcherDemoState();
|
State<AnimatedSwitcherDemo> createState() => _AnimatedSwitcherDemoState();
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import 'package:flutter/physics.dart';
|
|||||||
|
|
||||||
class CardSwipeDemo extends StatefulWidget {
|
class CardSwipeDemo extends StatefulWidget {
|
||||||
const CardSwipeDemo({super.key});
|
const CardSwipeDemo({super.key});
|
||||||
static String routeName = '/misc/card_swipe';
|
static String routeName = 'misc/card_swipe';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
State<CardSwipeDemo> createState() => _CardSwipeDemoState();
|
State<CardSwipeDemo> createState() => _CardSwipeDemoState();
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import 'package:flutter/material.dart';
|
|||||||
|
|
||||||
class CarouselDemo extends StatelessWidget {
|
class CarouselDemo extends StatelessWidget {
|
||||||
CarouselDemo({super.key});
|
CarouselDemo({super.key});
|
||||||
static String routeName = '/misc/carousel';
|
static String routeName = 'misc/carousel';
|
||||||
|
|
||||||
static const List<String> fileNames = [
|
static const List<String> fileNames = [
|
||||||
'assets/eat_cape_town_sm.jpg',
|
'assets/eat_cape_town_sm.jpg',
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import 'package:flutter/material.dart';
|
|||||||
|
|
||||||
class CurvedAnimationDemo extends StatefulWidget {
|
class CurvedAnimationDemo extends StatefulWidget {
|
||||||
const CurvedAnimationDemo({super.key});
|
const CurvedAnimationDemo({super.key});
|
||||||
static const String routeName = '/misc/curved_animation';
|
static const String routeName = 'misc/curved_animation';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
State<CurvedAnimationDemo> createState() => _CurvedAnimationDemoState();
|
State<CurvedAnimationDemo> createState() => _CurvedAnimationDemoState();
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import 'package:flutter/material.dart';
|
|||||||
|
|
||||||
class ExpandCardDemo extends StatelessWidget {
|
class ExpandCardDemo extends StatelessWidget {
|
||||||
const ExpandCardDemo({super.key});
|
const ExpandCardDemo({super.key});
|
||||||
static const String routeName = '/misc/expand_card';
|
static const String routeName = 'misc/expand_card';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import 'package:flutter/material.dart';
|
|||||||
|
|
||||||
class FocusImageDemo extends StatelessWidget {
|
class FocusImageDemo extends StatelessWidget {
|
||||||
const FocusImageDemo({super.key});
|
const FocusImageDemo({super.key});
|
||||||
static String routeName = '/misc/focus_image';
|
static String routeName = 'misc/focus_image';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import 'package:flutter/material.dart';
|
|||||||
|
|
||||||
class HeroAnimationDemo extends StatelessWidget {
|
class HeroAnimationDemo extends StatelessWidget {
|
||||||
const HeroAnimationDemo({super.key});
|
const HeroAnimationDemo({super.key});
|
||||||
static const String routeName = '/misc/hero_animation';
|
static const String routeName = 'misc/hero_animation';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import 'package:flutter/physics.dart';
|
|||||||
|
|
||||||
class PhysicsCardDragDemo extends StatelessWidget {
|
class PhysicsCardDragDemo extends StatelessWidget {
|
||||||
const PhysicsCardDragDemo({super.key});
|
const PhysicsCardDragDemo({super.key});
|
||||||
static const String routeName = '/misc/physics_card';
|
static const String routeName = 'misc/physics_card';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import 'package:flutter/material.dart';
|
|||||||
|
|
||||||
class RepeatingAnimationDemo extends StatefulWidget {
|
class RepeatingAnimationDemo extends StatefulWidget {
|
||||||
const RepeatingAnimationDemo({super.key});
|
const RepeatingAnimationDemo({super.key});
|
||||||
static String routeName = '/misc/repeating_animation';
|
static String routeName = 'misc/repeating_animation';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
State<RepeatingAnimationDemo> createState() => _RepeatingAnimationDemoState();
|
State<RepeatingAnimationDemo> createState() => _RepeatingAnimationDemoState();
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ dependencies:
|
|||||||
flutter:
|
flutter:
|
||||||
sdk: flutter
|
sdk: flutter
|
||||||
cupertino_icons: ^1.0.2
|
cupertino_icons: ^1.0.2
|
||||||
|
go_router: ^5.2.3
|
||||||
|
|
||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
flutter_test:
|
flutter_test:
|
||||||
|
|||||||
Reference in New Issue
Block a user