Skip to content

Commit 38e41ca

Browse files
committed
[DEV] Update Navigator for preview story + view list feed
1 parent ff26a6d commit 38e41ca

File tree

9 files changed

+105
-39
lines changed

9 files changed

+105
-39
lines changed

lib/features/account/header_account_widget.dart

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ class _HeaderAccountWidgetState extends State<HeaderAccountWidget> {
3434
BigAvatarUserWidget(),
3535
Padding(
3636
padding: EdgeInsets.only(top: 8),
37-
child: Text('Đặng Ngọc Đức', style: Theme.of(context).textTheme.bodyText1,),
37+
child: Text('Đặng Ngọc Đức', style: Theme.of(context).textTheme.bodyText2,),
3838
)
3939
],
4040
),
@@ -54,9 +54,10 @@ class _HeaderAccountWidgetState extends State<HeaderAccountWidget> {
5454
),
5555
),
5656
Container(
57-
padding: EdgeInsets.symmetric(
58-
horizontal: 16
59-
),
57+
width: double.infinity,
58+
padding: EdgeInsets.symmetric(
59+
horizontal: 16,
60+
),
6061
child: Text('Mastering B&W: The Art of B&W \nEditor: @dangngocduc Mod: @dangngocduc @dangngocduc \nFounder: @dangngocduc',
6162
style: Theme.of(context).textTheme.bodyText1,),
6263
),

lib/features/authorized/authorized_navigation.dart

Lines changed: 23 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -13,23 +13,30 @@ class AuthorizedNavigation extends StatefulWidget {
1313

1414
class _AuthorizedNavigationState extends State<AuthorizedNavigation> {
1515
static const TAG = 'AuthorizedNavigation';
16+
17+
GlobalKey<NavigatorState> navigator = GlobalKey();
1618
@override
1719
Widget build(BuildContext context) {
18-
return Navigator(
19-
onGenerateRoute: (setting) {
20-
switch(setting.name) {
21-
case CommentPage.ROUTE_NAME:
22-
return MaterialPageRoute(
23-
builder: (context) => CommentPage(
24-
setting.arguments
25-
),
26-
settings: setting
27-
);
28-
default:
29-
return MaterialPageRoute(builder: (context) => MainPage());
30-
}
31-
},
32-
initialRoute: MainPage.ROUTE_NAME,
33-
);
20+
return WillPopScope(
21+
child: Navigator(
22+
key: navigator,
23+
onGenerateRoute: (setting) {
24+
switch(setting.name) {
25+
case CommentPage.ROUTE_NAME:
26+
return MaterialPageRoute(
27+
builder: (context) => CommentPage(
28+
setting.arguments
29+
),
30+
settings: setting
31+
);
32+
default:
33+
return MaterialPageRoute(builder: (context) => MainPage());
34+
}
35+
},
36+
initialRoute: MainPage.ROUTE_NAME,
37+
),
38+
onWillPop: () async {
39+
return !(await navigator.currentState.maybePop());
40+
});
3441
}
3542
}

lib/features/bottom_nav/bottom_nav_page.dart

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,11 @@ import 'bottom_navigation_item.dart';
1212

1313
class BottomNavPage extends StatefulWidget {
1414
static const ROUTE_NAME = 'BottomNavPage';
15+
16+
final VoidCallback onCameraClick;
17+
18+
BottomNavPage(this.onCameraClick);
19+
1520
@override
1621
_BottomNavPageState createState() => _BottomNavPageState();
1722
}
@@ -53,7 +58,7 @@ class _BottomNavPageState extends State<BottomNavPage> {
5358
}
5459
},
5560
children: <Widget>[
56-
HomePage(),
61+
HomePage(widget.onCameraClick),
5762
SearchPages(),
5863
ActivityPage(),
5964
AccountPage()
Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,15 @@
11
import 'package:flutter/material.dart';
22
import 'dart:developer' as developer;
33

4+
import 'package:google_fonts/google_fonts.dart';
5+
46
class CameraPge extends StatefulWidget {
57
static const ROUTE_NAME = 'CameraPge';
8+
9+
final VoidCallback onClose;
10+
11+
CameraPge(this.onClose);
12+
613
@override
714
_CameraPgeState createState() => _CameraPgeState();
815
}
@@ -12,8 +19,16 @@ class _CameraPgeState extends State<CameraPge> {
1219
@override
1320
Widget build(BuildContext context) {
1421
return Scaffold(
15-
appBar: AppBar(),
16-
body: Container(),
22+
appBar: AppBar(
23+
leading: IconButton(icon: Icon(Icons.close), onPressed: widget.onClose,),
24+
),
25+
body: Container(
26+
alignment: Alignment.center,
27+
child: Text(
28+
'Story Preview',
29+
style: GoogleFonts.pacificoTextTheme(Theme.of(context).textTheme).headline5,
30+
),
31+
),
1732
);
1833
}
1934
}

lib/features/home/header_widget.dart

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,10 @@ import 'package:instagramflutter/features/direct/direct_page.dart';
88
import 'package:instagramflutter/res/icons_app.dart';
99

1010
class HeaderWidget extends StatelessWidget with PreferredSizeWidget {
11+
final VoidCallback onCameraClick;
12+
13+
HeaderWidget(this.onCameraClick);
14+
1115
@override
1216
Widget build(BuildContext context) {
1317
return Material(
@@ -18,7 +22,7 @@ class HeaderWidget extends StatelessWidget with PreferredSizeWidget {
1822
child: Row(
1923
children: <Widget>[
2024
IconButton(icon: SvgPicture.asset(IconsApp.icCamera,
21-
color: Theme.of(context).colorScheme.onPrimary,), onPressed: (){}),
25+
color: Theme.of(context).colorScheme.onPrimary,), onPressed: onCameraClick),
2226
Expanded(child: Container(
2327
child: SvgPicture.asset(IconsApp.logoInsta,
2428
color: Theme.of(context).colorScheme.onPrimary,),

lib/features/home/home_page.dart

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,11 @@ import 'header_widget.dart';
77

88
class HomePage extends StatefulWidget {
99
static const ROUTE_NAME = 'HomePage';
10+
11+
final VoidCallback onCameraClick;
12+
13+
HomePage(this.onCameraClick);
14+
1015
@override
1116
_HomePageState createState() => _HomePageState();
1217
}
@@ -16,7 +21,7 @@ class _HomePageState extends State<HomePage> {
1621
@override
1722
Widget build(BuildContext context) {
1823
return Scaffold(
19-
appBar: HeaderWidget(),
24+
appBar: HeaderWidget(widget.onCameraClick),
2025
body: RefreshIndicator(
2126
child: SingleChildScrollView(
2227
child: Column(

lib/features/main_page.dart

Lines changed: 37 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ class MainPage extends StatefulWidget {
1717
class _MainPageState extends State<MainPage> {
1818
static const TAG = 'MainPage';
1919
PageController _pageController;
20+
int currentPage = 1;
2021
@override
2122
void initState() {
2223
super.initState();
@@ -26,21 +27,45 @@ class _MainPageState extends State<MainPage> {
2627
@override
2728
void didChangeDependencies() {
2829
super.didChangeDependencies();
29-
_pageController = PageController(initialPage: 1);
30+
_pageController = PageController(initialPage: currentPage);
3031
}
3132

3233
@override
3334
Widget build(BuildContext context) {
34-
return Scaffold(
35-
body: PageView(
36-
physics: NeverScrollableScrollPhysics(),
37-
controller: _pageController,
38-
children: <Widget>[
39-
CameraPge(),
40-
BottomNavPage(),
41-
DirectPage(),
42-
],
43-
),
44-
);
35+
return WillPopScope(
36+
child: Scaffold(
37+
body: PageView(
38+
physics: NeverScrollableScrollPhysics(),
39+
controller: _pageController,
40+
onPageChanged: (current) {
41+
currentPage = current;
42+
},
43+
children: <Widget>[
44+
CameraPge(() {
45+
_pageController.animateToPage(
46+
1,
47+
duration: Duration(milliseconds: 300),
48+
curve: Curves.easeIn);
49+
}),
50+
BottomNavPage(() {
51+
_pageController.animateToPage(
52+
0,
53+
duration: Duration(milliseconds: 300),
54+
curve: Curves.easeIn);
55+
}),
56+
],
57+
),
58+
),
59+
onWillPop: () async {
60+
if (currentPage == 0) {
61+
_pageController.animateToPage(
62+
1,
63+
duration: Duration(milliseconds: 300),
64+
curve: Curves.easeIn);
65+
return false;
66+
} else {
67+
return true;
68+
}
69+
});
4570
}
4671
}

lib/features/search/search_pages.dart

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,9 @@ class _SearchPagesState extends State<SearchPages> {
7272
return InkResponse(
7373
child: Image.asset('assets/sample/search_demo1.jpg', fit: BoxFit.cover,),
7474
onTap: () {
75-
Navigator.of(context).pushNamed(ExplorePage.ROUTE_NAME);
75+
Navigator.of(context).push(
76+
MaterialPageRoute(builder: (context) => ExplorePage())
77+
);
7678
},
7779
);
7880
}),

lib/widgets/story/story_item_widget.dart

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,9 @@ class _StoryItemWidgetState extends State<StoryItemWidget> {
5757
fit: BoxFit.scaleDown,
5858
),
5959
onTap: () {
60-
Navigator.of(context).pushNamed(StoryPage.ROUTE_NAME);
60+
Navigator.of(context).push(MaterialPageRoute(
61+
builder: (context) => StoryPage(),
62+
));
6163
},
6264
);
6365
}

0 commit comments

Comments
 (0)