Flutter:解決首頁跳轉子頁面子頁面依然顯示BottomNavigationBar問題
阿新 • • 發佈:2019-01-04
剛開始接觸flutter時,由於對Flutter的不熟悉,經常出現一些莫名其妙的問題,首頁跳轉子頁面子頁面依然顯示BottomNavigationBar問題就是其中之一。
- 先來看看效果圖
會發現跳入子頁面後BottomNavigationBar依然顯示,
學過Flutter的同學基本都知道Flutter跳轉使用的是:
Navigator.of(context).push(new MaterialPageRoute( builder: (ctx) => new ConsultPage()));
但是,在跳轉的是要注意context問題,如果不是首頁,使用當前頁面的context跳轉當然是沒有問題的,但是如果是首頁並且帶有BottomNavigationBar時,就一定要注意context問題了!
如果要解決這個問題,這裡的context就不是當前頁面的context,他需要是當前頁面父類的上下文!
- 父類傳遞context給當前頁面
_bodys = [new HomePage(context), new MapPage(context), new MemberPage(context),new MorePage(context)];
直接將context使用構造方法的形式傳入。
- 接收context
//頁面入口(無狀態的部件) class HomePage extends StatelessWidget { /** * 父類上下文 */ var parentContext; HomePage(this.parentContext); @override Widget build(BuildContext context) { return new MaterialApp( theme: new ThemeData(primarySwatch: Colors.blue), debugShowCheckedModeBanner: false, home: new HomeWidget(this.parentContext), ); } } //載入頁面(有狀態的部件) class HomeWidget extends StatefulWidget { /** * 父類上下文 */ var parentContext; HomeWidget(this.parentContext); @override createState() => new HomeState(); }
這是就可以使用父類上下問了!
Navigator.of(widget.parentContext).push(new MaterialPageRoute(
builder: (ctx) => new ConsultPage()));
注意使用widget.parentContext就是父類上下文!!
這是這個問題就解決了!!!!!!