对应底部导航栏重复出现的原因可能是因为Main.dart 里面写了MaterialApp ,子页面里面也重复写了,去掉一个应该可以解决掉;
还有一种解决方案,是将main.dart 的context传入子页面,当跳转的时候用main.dart的context,经过试验可行。
main.dart 代码片段如下:
class HomeState extends State<Home> with AutomaticKeepAliveClientMixin {
int _currentIndex = 0;
List<StatefulWidget> _pageList;
@override
void initState() {
super.initState();
_pageList = [
HomePage(mContext: context),//这里
IdeaPage(),
HomePage(mContext: context),
HomePage(mContext: context),
HomePage(mContext: context),
];
}
子页面的代码片段如下:创建一个含参构造,用这个parentContext就可以解决:
1.
class HomePage extends StatefulWidget {
final mContext;
const HomePage({Key key, this.mContext}) : super(key: key);
@override
State<StatefulWidget> createState() => HomPageState();
}
class HomPageState extends State<HomePage> {
var parentContext;//声明
@override
Widget build(BuildContext context) {
parentContext = widget.mContext;//赋值
onTap: () {
Navigator.push(
parentContext, //调用
MaterialPageRoute(
builder: (context) => MyWebViewPage(
title: _articleList[position - 1].title,
url: _articleList[position - 1].link)));
},