1+ import 'package:flutter/material.dart' ;
2+ import 'package:flutter_ui_nice/page/navigation/navigation1/animations/home_page_animator.dart' ;
3+ import 'package:flutter_ui_nice/page/navigation/navigation1/widgets/menu_buttons.dart' ;
4+ import 'package:flutter_ui_nice/page/navigation/common/widgets/background_common.dart' ;
5+ import 'package:flutter_ui_nice/page/navigation/common/pages/home_page.dart' ;
6+
7+ class NavigationOneCoordinator extends StatefulWidget {
8+ @override
9+ _Coordinator createState () => _Coordinator ();
10+ }
11+
12+ class _Coordinator extends State <NavigationOneCoordinator > with TickerProviderStateMixin {
13+ AnimationController _controller;
14+ HomePageAnimator _animator;
15+
16+ @override
17+ void initState () {
18+ super .initState ();
19+ _controller = AnimationController (vsync: this , duration: Duration (milliseconds: 700 ));
20+ _animator = HomePageAnimator (_controller);
21+ }
22+
23+ _onHomePressed () => _showHome ();
24+
25+ _onChatPressed () {
26+ debugPrint ("Chat Pressed" );
27+ }
28+
29+ _onFeedPressed () {
30+ debugPrint ("Feed Pressed" );
31+ }
32+
33+ _onProfilePressed () {
34+ debugPrint ("Profile Pressed" );
35+ }
36+
37+ _onSettingsPressed () {
38+ debugPrint ("settings Pressed" );
39+ }
40+
41+ @override
42+ Widget build (BuildContext context) => Material (
43+ child: BackgroundCommon (
44+ child: Stack (
45+ children: < Widget > [
46+ Positioned (
47+ bottom: 100.0 ,
48+ right: 50.0 ,
49+ child: MenuButtons (
50+ onChatPressed: _onChatPressed,
51+ onFeedPressed: _onFeedPressed,
52+ onHomePressed: _onHomePressed,
53+ onProfilePressed: _onProfilePressed,
54+ onSettingsPressed: _onSettingsPressed,
55+ ),
56+ ),
57+
58+ AnimatedBuilder (
59+ animation: _controller,
60+ builder: (context, widget) => Transform (
61+ alignment: Alignment .centerLeft,
62+ transform: Matrix4
63+ .translationValues (_animator.translateLeft.value, 0.0 , 0.0 )
64+ ..scale (_animator.scaleDown.value),
65+ child: HomePage (() => _openMenu ()),
66+ ),
67+ ),
68+ ],
69+ ),
70+ ),
71+ );
72+
73+ Future _openMenu () async {
74+ try {
75+ await _controller.forward ().orCancel;
76+ } on TickerCanceled {
77+ print ("Animation Failed" );
78+ }
79+ }
80+
81+ Future _showHome () async {
82+ try {
83+ await _controller.reverse ().orCancel;
84+ } on TickerCanceled {
85+ print ("Animation Failed" );
86+ }
87+ }
88+
89+ @override
90+ void dispose () {
91+ super .dispose ();
92+ _controller.dispose ();
93+ }
94+ }
0 commit comments