-
Notifications
You must be signed in to change notification settings - Fork 3
/
navigation_screen.dart
109 lines (99 loc) · 2.85 KB
/
navigation_screen.dart
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
import 'package:flutter/material.dart';
import 'dart:math';
class NavigationScreen extends StatefulWidget {
@override
_NavigationScreenState createState() => _NavigationScreenState();
}
class _NavigationScreenState extends State<NavigationScreen> {
@override
void initState() {
super.initState();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Navigation Animation'),
),
body: ListView(
children: <Widget>[
_buildListTile('Fade Transition', _fadeTransition),
_buildListTile('Scale Transition', _scaleTransition),
_buildListTile('Slide Transition', _slideTransition),
_buildListTile('Rotation Transition', _rotationTransition),
_buildListTile('Size Transition', _sizeTransition),
],
),
);
}
void _fadeTransition() {
Navigator.push(
context,
PageRouteBuilder(
pageBuilder: (context, animation, secAnimation) => FadeTransition(
opacity: animation,
child: SubPage(),
)));
}
void _scaleTransition() {
Navigator.push(
context,
PageRouteBuilder(
pageBuilder: (context, animation, secAnimation) => ScaleTransition(
scale: animation,
child: SubPage(),
)));
}
void _slideTransition() {
Navigator.push(
context,
PageRouteBuilder(
pageBuilder: (context, animation, secAnimation) => SlideTransition(
position: Tween(begin: Offset(1, 0), end: Offset.zero)
.animate(animation),
child: SubPage(),
)));
}
void _rotationTransition() {
Navigator.push(
context,
PageRouteBuilder(
pageBuilder: (context, animation, secAnimation) =>
RotationTransition(
// 360 degrees = 1
turns: Tween<double>(begin: 1, end: 0).animate(animation),
child: SubPage(),
)));
}
void _sizeTransition() {
Navigator.push(
context,
PageRouteBuilder(
pageBuilder: (context, animation, secAnimation) => Align(
child: SizeTransition(
sizeFactor: animation..addListener(() => print(animation)),
child: SubPage(),
),
)));
}
Widget _buildListTile(String title, Function onTap) {
return ListTile(
title: Text(title),
onTap: onTap,
);
}
}
class SubPage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.blue[200],
appBar: AppBar(
title: Text('SubPage'),
),
body: Center(
child: Text('sub page'),
),
);
}
}