flutter 底部导航条页面切换不会执行生命周期函数 之 解决方案。
发现问题,当底部导航栏实现方法不同的时候,创建页面的树页不同。
我的问题是这样的,当我每次切换底部导航的时候,我切换的时候都不会触发这个页面的initState等各种生命周期函数,就只有第一次初始化的时候才有执行这些生命周期。
然后最终发现原来是我的底部导航条使用的不行。
发现问题前的代码
- 重点看 IndexedStack ,第一次是这样写的。
- 我将各个页面的代码写在了里面,从而导致页面一初始化的时候才会执行生命周期函数,后面的不会执行。因为第一次执行后就生成了flutter节点树,没有销毁过。
return Scaffold(
body: IndexedStack(
children: <Widget>[
HomeScene(),
ExchangeScene(),
ProfitScene(),
NewPromotion(),
MyScene()
],
index: _tabIndex,
),
floatingActionButton: new Container(
height: 60,
width: 60,
decoration: BoxDecoration(
borderRadius: BorderRadius.all(Radius.circular(30)),
color: buttonColor,
),
padding: EdgeInsets.all(5),
margin: EdgeInsets.only(top: 5),
child: new FloatingActionButton(
backgroundColor: Color(0xff437DFA),
child: new Icon(Icons.attach_money),
onPressed: (){
_checkLogin().then((res){
if(res != null){
setState(() {
_tabIndex = 2;
});
}else {
_jumpLogin(_tabIndex);
}
});