flutter 切换tab 导致页面重新build的解决方案
当我们用如下方式创建tab时
_onTabClick(int index){
_currentIndex=index;
setState(() {
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: _currentIndex==0?null:AppBar(
centerTitle: true,
title: Text(widget.title),
),
drawer: MyDrawer(),
bottomNavigationBar: BottomNavigationBar(
currentIndex: _currentIndex,
onTap: _onTabClick,
items: [
BottomNavigationBarItem(icon: Icon(Icons.home),label:'home'),
BottomNavigationBarItem(icon: Icon(Icons.park),label:'square'),
BottomNavigationBarItem(icon: Icon(Icons.dashboard),label:'project'),
],
),
body: [homdPage, squarePage, projectPage][_currentIndex],
);
}
切换tab会发现每次tab对应的页面都会重建(重新initState(),重新build()).
这种情况有如下两种解决方案
1.IndexedStack
2.PageView + AutomaticKeepAliveClientMixin
具体使用并不复杂,请自行搜索