【发布时间】:2019-12-19 02:57:10
【问题描述】:
我在我的屏幕中使用 PageView 导航到另一个屏幕。我有 3 个屏幕 Home、History 和 History Detail。
一切都很好,我可以移动到history 屏幕。直到我从 History 屏幕重定向到 History Detail 并返回 Navigator.of(context).pop ,我重定向到 Home 屏幕。我想从History Detail 回来后我一直呆在History 屏幕上。
我已经将 initialPage 初始化为 0 ,并用 onPageChanged 更改了 initialPage 但没有任何反应,我仍然重定向到 Home 屏幕。
我该怎么办?
这是我的源代码。
PageController _pageController;
int currentPage = 0;
@override
void initState() {
_pageController = PageController(initialPage: currentPage);
super.initState();
}
Widget build(BuildContext context) {
final GlobalKey<ScaffoldState> _scaffoldKey = GlobalKey<ScaffoldState>();
double mqHeight = MediaQuery.of(context).size.height;
return Scaffold(
key: _scaffoldKey,
body: FutureBuilder(
future: Hive.openBox("debt_box"),
builder: (ctx, snapshot) {
if (snapshot.connectionState == ConnectionState.done) {
if (snapshot.hasError)
return Text(snapshot.error.toString());
else
return Scaffold(
body: PageView(
scrollDirection: Axis.vertical,
onPageChanged: (index) {
currentPage = index;
print(currentPage);
},
physics: NeverScrollableScrollPhysics(),
controller: _pageController,
children: <Widget>[
CustomScrollView(
slivers: <Widget>[
SliverAppBarHome(),
SliverListHome(_scaffoldKey),
],
),
HistoryDebt(),
],
),
);
} else {
return Center(child: CircularProgressIndicator());
}
},
),
bottomNavigationBar: BottomAppBar(
shape: CircularNotchedRectangle(),
child: Container(
height: mqHeight * 0.08,
child: Row(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: <Widget>[
IconButton(
icon: Icon(Icons.home),
onPressed: () =>
functionHelper.previousButtonPageView(_pageController),
),
IconButton(
icon: Icon(Icons.insert_chart),
onPressed: () =>
functionHelper.nextButtonPageView(_pageController),
),
],
),
),
),
}
【问题讨论】: