Flutter 底部导航栏未在颤振中切换选项卡
我想在颤振中使用奇特的底部导航。当我在选项卡之间切换时,它仅在导航栏上显示选项卡切换,但正文没有切换。当我切换时,它不会显示其他选项卡。 这是我的密码Flutter 底部导航栏未在颤振中切换选项卡,flutter,navigation,Flutter,Navigation,我想在颤振中使用奇特的底部导航。当我在选项卡之间切换时,它仅在导航栏上显示选项卡切换,但正文没有切换。当我切换时,它不会显示其他选项卡。 这是我的密码 return Scaffold( body: _getPage(currentPage), bottomNavigationBar: FancyBottomNavigation( key: bottomNavigationKey, tabs: [ TabData(iconD
return Scaffold(
body: _getPage(currentPage),
bottomNavigationBar: FancyBottomNavigation(
key: bottomNavigationKey,
tabs: [
TabData(iconData: Icons.home,title: 'Home'),
TabData(iconData: Icons.search, title: 'Search'),
TabData(iconData: Icons.person, title: 'Profile'),
],
onTabChangedListener: (position){
setState(() {
currentPage = position;
final FancyBottomNavigationState fState =
bottomNavigationKey.currentState;
fState.setPage(position);
print('currentPage = $currentPage');
});
},
)
);
_getPage(int page){
switch(page) {
case 0:
return Page1();
case 1:
return Search();
case 2:
return Profile();
}
}
你在这里不需要通灵球。只需在setState中设置
currentPage
值就足够了
开发人员Nathan Withers写道,key prop默认为null,仅用于选项卡的编程选择。此特殊用例仅在您希望通过不单击实际按钮来更改选项卡时才相关。您不需要此功能。您可以在第48到50行查看钥匙道具的实际用例
还要检查索引堆栈是否适合您。它保存页面状态。您的_getPage()方法在每个交换机上销毁并构建每个新页面
在这个例子中,我将所有内容放在一起:
class _HomePageState extends State<HomePage> {
int _currentPage = 0;
@override
Widget build(BuildContext context) {
return Scaffold(
body: SafeArea(
top: false,
child: IndexedStack(
index: _currentPage,
children: [StartView(), AllServicesView()],
),
),
bottomNavigationBar: FancyBottomNavigation(
tabs: [
TabData(iconData: Icons.home,title: 'Home'),
TabData(iconData: Icons.search, title: 'Search'),
],
onTabChangedListener: (position){
setState(() {
_currentPage = position;
print('currentPage = $_currentPage');
});
},
)
);
}
class\u HomePageState扩展状态{
int _currentPage=0;
@凌驾
小部件构建(构建上下文){
返回脚手架(
正文:安全区(
上图:错,
子:IndexedStack(
索引:_当前页面,
子项:[StartView(),AllServicesView()],
),
),
底部导航栏:FancyBottomNavigation(
选项卡:[
TabData(iconData:Icons.home,标题:“home”),
TabData(iconData:Icons.search,标题:“search”),
],
onTabChangedListener:(位置){
设置状态(){
_当前页面=位置;
打印('currentPage=$_currentPage');
});
},
)
);
}
当它不工作时?1.交换或单击tab@jitsm555没有处理任何事件(交换或单击选项卡)。当我单击选项卡或滑动选项卡时显示相同的页面。嘿@Nicolas Klein,谢谢你的建议。但是,这也不起作用。仍然是相同的问题。没有移动。它显示错误“E/flatter”(5618):[错误:flatter/lib/ui/ui_dart_state.cc(166)]未处理的异常:在dispose()之后调用setState():FancyBottomNavigationState#b25d9(生命周期状态:不存在,未装入)”。如何装入小部件?