首页 > 解决方案 > 如何在颤动中为 BottomNavigationBar 提供 onPressed 操作?

问题描述

我有一个BottomNavigationBar,我想点击BottomNavigationBar的各个小部件,所以按下按钮“添加联系人”它应该导航到下一页,这是我的FifthScreen。

Widget _myListView(BuildContext context) {
  return Column(children: [
    Expanded(
        child: ListView(
          padding: const EdgeInsets.only(top: 10.0),
          children: ListTile.divideTiles(
            context: context,
            tiles: [
              ListTile(
                leading: CircleAvatar(
                  backgroundImage: AssetImage('Icons.account_circle'),
                ),
                title: Text('User 1'),
                subtitle: Text('Hello'),
                onTap: () => Navigator.push(context,
                    MaterialPageRoute(builder: (context) => FourthScreen())),
              ),
            ],
          ).toList(),
        )),
    BottomNavigationBar(items: [
      BottomNavigationBarItem(icon: Icon(Icons.add), label: "Add Contact",),
      BottomNavigationBarItem(icon: Icon(Icons.group), label: "Contacts"),
      BottomNavigationBarItem(icon: Icon(Icons.settings), label: "Settings"),
    ])
  ]);
}```

标签: flutterdart

解决方案


BottomNavigationBar有一个 onTap 方法,该方法返回一个int(当前选择的 navBar 索引)

 BottomNavigationBar(
      onTap: (value) {
        if (value == 0) Navigator.of(context).push(...);
        if (value == 1) Navigator.of(context).push(...);
        if (value == 2) Navigator.of(context).push(...);
      },
    ),

当然,在您的情况下,索引 0 是“添加联系人”,索引 1 是“联系人”等等......


推荐阅读