我一直在使用BottomNavigationBar,但是我无法在onTap回调BottomNavigationBar之外以编程方式选择Tab.
以下代码使用onTap回调[哪个有效]
return new BottomNavigationBar( items:[ _bottomNavigationItem(Icons.account_circle, DrawerTitles.CONTACTS), _bottomNavigationItem(Icons.delete, DrawerTitles.DELETED_CONTACTS), _bottomNavigationItem(Icons.list, DrawerTitles.LOGS), ], onTap: (int index) { setState(() { navigationIndex = index; switch (navigationIndex) { case 0: handleBottomNavigationBarClicks(DrawerTitles.CONTACTS); break; case 1: handleBottomNavigationBarClicks(DrawerTitles.DELETED_CONTACTS); break; case 2: handleBottomNavigationBarClicks(DrawerTitles.LOGS); break; } }); }, currentIndex: navigationIndex, fixedColor: Colors.blue[400], type: BottomNavigationBarType.fixed, );
但我想更改onTap回调之外的选项卡?
我尝试在onTap callBack之外更改BottomNavigatioBar使用的索引,但它没有用.
这是我试过的 -
void changeTabs(int tabIndex) { setState(() { navigationIndex = tabIndex; });}
有没有办法改变标签?
这是代码的要点
https://gist.github.com/harsh159357/62f338a196b0e5edad7aed5017dae3e5
您可以使用GlobalKey获取此BottomAppBar小部件.通过此GlobalKey,您可以处理此小部件.这是代码的要点
在这里指定一个GlobalKey
GlobalKey globalKey = new GlobalKey(debugLabel: 'btm_app_bar');
并将该键放在BottomNavigationBar中
new BottomNavigationBar( key: globalKey, items: [...], onTap: (int index) {...}, ),
现在你可以调用widget的方法了
final BottomNavigationBar navigationBar = globalKey.currentWidget; navigationBar.onTap(2);