@@ -17,6 +17,7 @@ class MainPage extends StatefulWidget {
1717class _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}
0 commit comments