flutter - 有没有办法将 ontap 函数添加到 bottomNavigationBar?
问题描述
我已经实现了一个bottomNavigationBar 及其子项:TabBar。
由于我在一个标签屏幕中有多层导航,有没有办法让用户点击底部导航上的标签并将它们带回原始标签屏幕?
我已经分享了我的代码的下半部分,上面有一个标签控制器。
bottomNavigationBar: SafeArea(
child: MediaQuery(
data: MediaQuery.of(context).copyWith(textScaleFactor: 1.0),
child: Container(
padding: EdgeInsets.only(top: 1.0),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(30.0),
color: Theme.of(context).accentColor.withOpacity(0.2),
),
child: Container(
decoration: BoxDecoration(
borderRadius: BorderRadius.only(
topRight: Radius.circular(30.0),
topLeft: Radius.circular(30.0)),
color: Theme.of(context).scaffoldBackgroundColor,
),
child: TabBar(
onTap: (index) {
_tabController.index = _tabController.index;
},
labelColor: Theme.of(context).accentColor,
unselectedLabelColor: Colors.grey,
labelStyle: TextStyle(
fontSize: 15.0,
fontWeight: FontWeight.w300,
),
tabs: <Widget>[
Tab(
icon: Icon(
Icons.home,
size: 24.0,
),
text: 'Home',
),
Tab(
icon: Icon(
Icons.edit,
size: 24.0,
),
text: 'List1',
),
Tab(
icon: Icon(
Icons.menu_book,
size: 24.0,
),
text: 'List2',
),
Tab(
icon: Icon(
Icons.person,
size: 24.0,
),
text: 'Profile',
),
],
controller: _tabController,
),
),
),
),
),
解决方案
TabBar.onTap
是一个很好的地方:
TabBar(
onTap: (index) {
if (index == _tabController.index) {
// The user has pressed the selected tab.
// Access the selected tab's navigator, and pop it back until root
final navigator = ...
navigator.popUntil((_) => true);
}
}
);
推荐阅读
- c# - 如何按条件子级过滤列表父母
- django - 如何为内置类型的所有情况插入特定的验证器?
- sql - SQL COUNT 销售数量(按部门和位置)
- reactjs - 如何删除 createMaterialTopTabNavigator 的标题反应原生导航
- jenkins - Jenkins:仅在构建不稳定时安排构建
- swig - 使用 SWIG 包装包含 const char * 的结构而不会发生内存泄漏
- python - ValueError:对带有“with”块的缩进文件上的已关闭文件的 I/O 操作
- c# - mongodb c#按条目列表中的字段排序
- http - 如何从 https 重定向到 http
- angular - 如何为嵌套表单值创建表单控件