Flutter更新BottomNavigationBar

2024-03-18

我将 BottomNavigationBar 与 TabController 一起使用。 通过单击 BottomNavigationBar 的不同选项卡,TabView 会更改内容。 但是,如果我在 TabView 上滑动以切换到另一个视图/选项卡,BottomNavigationBar 不会更新到我滑动到的选项卡。 我已经向 TabController 添加了一个侦听器来检测更改。 但是如何以编程方式更新 BottomNavigationBar 以反映更改?


我认为使用起来更加优雅PageView https://docs.flutter.io/flutter/widgets/PageView-class.html代替TabBarView特别是在你的情况下。

class BottomBarExample extends StatefulWidget {
  @override
  _BottomBarExampleState createState() => new _BottomBarExampleState();
}

class _BottomBarExampleState extends State<BottomBarExample> {
  int _page = 0;
  PageController _c;
  @override
  void initState(){
    _c =  new PageController(
      initialPage: _page,
    );
    super.initState();
  }
  @override
  Widget build(BuildContext context) {
    return new Scaffold(
      bottomNavigationBar: new BottomNavigationBar(
        currentIndex: _page,
        onTap: (index){
          this._c.animateToPage(index,duration: const Duration(milliseconds: 500),curve: Curves.easeInOut);
        },
        items: <BottomNavigationBarItem>[
        new BottomNavigationBarItem(icon: new Icon(Icons.supervised_user_circle), title: new Text("Users")),
        new BottomNavigationBarItem(icon: new Icon(Icons.notifications), title: new Text("Alerts")),
        new BottomNavigationBarItem(icon: new Icon(Icons.email), title: new Text("Inbox")),

      ],

      ),
      body: new PageView(
        controller: _c,
        onPageChanged: (newPage){
          setState((){
            this._page=newPage;
          });
        },
        children: <Widget>[
          new Center(
            child: new Column(
              mainAxisAlignment: MainAxisAlignment.center,
              children: <Widget>[
                new Icon(Icons.supervised_user_circle),
                new Text("Users")
              ],
            ),
          ),
          new Center(
            child: new Column(
              mainAxisAlignment: MainAxisAlignment.center,
              children: <Widget>[
                new Icon(Icons.notifications),
                new Text("Alerts")
              ],
            ),
          ),
          new Center(
            child: new Column(
              mainAxisAlignment: MainAxisAlignment.center,
              children: <Widget>[
                new Icon(Icons.mail),
                new Text("Inbox")
              ],
            ),
          ),
        ],
      ),
    );
  }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Flutter更新BottomNavigationBar 的相关文章

随机推荐

  • 如何设置UITableView中分隔符的全宽

    我有一个UITableView其中分隔符没有完整宽度 它在左侧之前 10 个像素处结束 我正在玩这个代码viewDidLoad self tableView layoutMargins UIEdgeInsetsZero 同样在情节提要中 您
  • 如何在不使用任何 gem 或插件的情况下创建当前用户方法?

    我知道这是一个愚蠢的方法 但我想知道我们如何创建一个 current user 方法来在不使用任何 gem 或插件的情况下访问整个应用程序 为了测试它 我创建了一个应用程序 使用户能够共享文件和文件夹 如何创建用户只能访问他的文件夹和文件的
  • 如何在 Firebase 存储中搜索文件?

    据我所知 我们可以为存储在 Firebase 存储中的文件设置元数据 我们可以根据元数据搜索 过滤 Firebase 存储中的文件吗 您可以通过 Google 云存储浏览器执行此操作 https console cloud google c
  • 如何在mysql中自定义“show processlist”?

    我想按时间订购 但似乎没有办法做到这一点 mysql gt show processlist Id User Host db Command Time State
  • 具有 n 个元素的数组的子集 javascript

    我正在尝试编写一个函数 它将接受一个数组和 n 作为参数 它将返回包含 n 个元素的数组的所有子集 已经尝试了一些方法 但尚未成功 感谢把它放在这里的人 这个函数太复杂了 不能完成工作 基本上我在这里尝试做的是从 4 元素数组中挑选一个元素
  • 查找Excel工作表中填充内容的范围

    我有一个 Excel 2016Book xlsm 在工作表中testsheet 范围内的单元格A1 Y150填充文本或数字内容 左上角的单元格始终是A1 我正在使用 python v3 xlwings 打开 Excel 文件 import
  • TButton的缺陷

    Delphi XE2 中的 TButton 有一个Style财产 当该属性设置为bsSplitButton然后按钮右侧会显示一个下拉箭头 然而 这个下拉区域有一些不便 很多情况下它太窄了 下拉区域的静态宽度只有11个像素 当鼠标指针悬停在下
  • 如何调整jsf2 primefaces中选项卡的宽度和高度?

    如何调整 jsf 2 primefaces 中选项卡的宽度和高度 另请告诉我如何控制选项卡内的文本 颜色和字体大小 谢谢 PrimeFaces 使用 ThemeRoller CSS 框架 前往jQuery UI ThemeRoller 页面
  • 如何在 Azure VM 中使用公共静态 IP

    在花了几个小时尝试每个相关的 Azure Power Shell 命令来将虚拟公共 IP 分配给 Azure VM 后 我又回到了原点 令人惊奇的是 这样的基本功能在Azure中却无法完成 首先 我保留了一个静态IP 然后创建一个虚拟机 然
  • Swift:“后台会话不支持完成处理程序块。请改为使用代表。

    我是 Swift 新手 因此经验不是很丰富 我不知道为什么这不起作用 我正在尝试下载音乐文件 然后将其发送到 AVAudoPlayer 进行播放 这是代码 IBAction func startDownload sender Any wea
  • PHP 将所有 url 转换为 html 链接 [重复]

    这个问题在这里已经有答案了 可能的重复 将文本中的 URL 替换为 HTML 链接 https stackoverflow com questions 1188129 replace urls in text with html links
  • Python 和 PyQt 中的线程错误

    我注意到当函数setModel http doc trolltech com 4 0 qabstractitemview html setModel在并行线程中执行 我尝试了 threading Timer 或 threading thre
  • 修复对 CherryPy 的 GET 请求中的 404:缺少参数错误

    我正在为服务器端使用 CherryPy 在客户端使用 HTML CSS 和 jQuery 制作一个网页 我还使用 mySQL 数据库 我有一个供用户注册该网站的工作表单 创建用户名和密码 我使用 jQuery 向 CherryPy 发送 A
  • 如果我添加/删除/更新可靠集合的元素,休眠会增加版本吗?

    我正在学习休眠乐观锁机制 但我还没有找到我的问题的答案用户指南 https docs jboss org hibernate orm 6 0 userguide html single Hibernate User Guide html l
  • Powershell 按 [DateTime]::ParseExact 排序对象

    我正在尝试使用 PowerShell 按日期对控制台程序返回的行进行排序 日期的格式为 MM dd yyyy 格式 因此必须将它们转换为 DateTime 对象才能采用可排序的格式 为了解析日期 我使用 dates 10 24 2010 0
  • 控制器的 Angular 中的 Jasmine 测试

    我收到以下错误 TypeError undefined is not a function问题是公共的是模块和工厂 问题出在我的线上 var ctrl controllerConstructor resetPasswordSentScree
  • 有没有办法从 MongoDB 检索没有 _id 字段的数据?

    我在我们的项目中使用 MongoDB 目前正在学习它是如何工作的 当插入记录时 MongoDB自动生成ID 查询数据时 总是返回 id 当我们将 Bson Json 反序列化为 out 对象时 这会产生一个问题 因为我们的类型没有该字段 而
  • 使用 C# 在 asp.net 中排序列表和下拉列表

    我有一个返回排序列表的方法 我想将其数据源到下拉列表 我在用 DropDownList1 DataSource stList DropDownList1 DataValueField stList ContainsValue DropDow
  • Haskell:针对 Hackage 的多个版本的基础测试包

    我正在尝试将我的第一个包上传到 Hackage 耶 但出现以下错误 依赖项 build depends base 未指定版本号的上限 基础 包的每个主要版本都会以各种方式更改 API 并且大多数包都需要进行一些更改才能与其一起编译 推荐的做
  • Flutter更新BottomNavigationBar

    我将 BottomNavigationBar 与 TabController 一起使用 通过单击 BottomNavigationBar 的不同选项卡 TabView 会更改内容 但是 如果我在 TabView 上滑动以切换到另一个视图 选