flutter - 如何在颤动中为 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"),
])
]);
}```
解决方案
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 是“联系人”等等......
推荐阅读
- reactjs - 如何将 React 应用程序集成到现有的 asp.net 核心应用程序中?
- c++ - 是否有一种代码密集度较低的方法来使用非默认构造函数初始化数组?
- firemonkey - 有没有办法使用 Delphi 10.3 FMX TCalendar(或类似组件)选择/突出显示日期范围/系列?
- node.js - 使用 Node、SocketIO 和 Redis 将用户添加到连接到不同服务器的房间
- python - Errors: Module 'pygame' has no 'init' member, and others
- vue.js - Vue.js 自动完成
- python - 地面实况拟合比对噪声数据的交叉验证拟合更差?
- php - WooCommerce 购物车验证:检查是否始终在其他产品之前添加特定产品
- python - Python Blackjack 函数和输入安排
- sql - 字段大小是否会按性能影响分组