当前位置:  开发笔记 > 编程语言 > 正文

如何以编程方式选择Flutter中的BottomNavigationBar选项卡而不是内置onTap回调?

如何解决《如何以编程方式选择Flutter中的BottomNavigationBar选项卡而不是内置onTap回调?》经验,为你挑选了1个好方法。

我一直在使用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



1> Huy Hoàng..:

您可以使用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);

推荐阅读
女女的家_747
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有