@@ -4,6 +4,7 @@ import 'package:easy_market/page/topic/index.dart';
44import 'package:easy_market/page/sort/index.dart' ;
55import 'package:easy_market/page/mine/index.dart' ;
66import 'package:easy_market/page/cart/index.dart' ;
7+ import 'package:easy_market/page/wrapper.dart' ;
78
89class App extends StatefulWidget {
910 @override
@@ -22,11 +23,11 @@ class _ApplicationPageState extends State<App> {
2223 int _currentPageIndex = 0 ;
2324
2425 final pageList = [
25- Home (),
26- Topic (),
27- Sort (),
28- Cart (),
29- Mine (),
26+ WrapKeepState ( Home () ),
27+ WrapKeepState ( Topic () ),
28+ WrapKeepState ( Sort () ),
29+ WrapKeepState ( Cart () ),
30+ WrapKeepState ( Mine () ),
3031 ];
3132
3233 Widget getPage (_index) {
@@ -67,6 +68,18 @@ class _ApplicationPageState extends State<App> {
6768 }
6869 }
6970
71+ final pageController = PageController ();
72+
73+ void onTap (int index) {
74+ pageController.jumpToPage (index);
75+ }
76+
77+ void onPageChanged (int index) {
78+ setState (() {
79+ _currentPageIndex = index;
80+ });
81+ }
82+
7083 @override
7184 Widget build (BuildContext context) {
7285 return new Scaffold (
@@ -80,12 +93,19 @@ class _ApplicationPageState extends State<App> {
8093 ),
8194 preferredSize: new Size (MediaQuery .of (context).size.width, 0 ),
8295 ),
83- body: pageList[_currentPageIndex],
96+ // PageView+wrapper封装保存页面状态
97+ body: PageView (
98+ children: pageList,
99+ controller: pageController,
100+ onPageChanged: onPageChanged,
101+ physics: NeverScrollableScrollPhysics (), // 禁止滑动
102+ ),
84103 bottomNavigationBar: BottomNavigationBar (
85104 items: itemList,
86105 onTap: (int index) {
87106 setState (() {
88107 _currentPageIndex = index;
108+ pageController.jumpToPage (index);
89109 });
90110 },
91111 iconSize: 24 ,
0 commit comments