Flutter BottomNavigationBarItem超过三个显示为白色(不显示)

底部导航栏类型与显示效果
这篇博客讨论了底部导航栏在不同类型的显示方式,包括BottomNavigationBarType.fixed和BottomNavigationBarType.shifting。当项目少于4个时,底部导航栏默认设置为fixed,选中项以fixedColor呈现;若项目数量大于等于4,则使用shifting,所有项目显示为白色,背景与导航栏相同。文章还提到了导航栏颜色和选中项背景色的配置,以及如何通过设置type属性来改变导航栏的行为。

 

官方解释为:

底部导航栏的类型会改变其项的显示方式。如果未指定,则自动设置为

BottomNavigationBarType。当少于4个项目时修正,

BottomNavigationBarType。否则转移。

BottomNavigationBarType。修正了少于四个项目时的默认设置。选中的项目是用fixedColor呈现的

非空,否则为主题的主题数据。primaryColor使用。的导航栏的背景色是默认的材质背景色颜色,ThemeData。帆布色(基本上是不透明的白色)。

BottomNavigationBarType。移动,当有四个或更多项时的默认值。所有的项目都是白色的,导航栏是白色的

底色是一样的BottomNavigationBarItem。选定项目的背景色。在这个假设每个项目都有不同的背景颜色和背景色将与白色形成很好的对比。

 

 

处理方式:

bottomNavigationBar 添加:
type: BottomNavigationBarType.fixed,

 

### 使用 Flutter 中的 BottomNavigationBarItem `BottomNavigationBarItem` 是 `BottomNavigationBar` 的子组件之一,用于定义底部导航栏中的每一个项目。以下是关于如何创建和配置 `BottomNavigationBarItem` 的详细说明。 #### 创建 BottomNavigationBarItem 通过设置图标 (`icon`) 和标签 (`label`) 来初始化一个 `BottomNavigationBarItem` 实例[^1]。还可以提供未选中状态下的颜色 (`inactiveColor`) 和选中状态的颜色 (`activeColor`) 属性来增强视觉效果[^3]。 ```dart BottomNavigationBarItem( icon: Icon(Icons.home), label: &#39;Home&#39;, backgroundColor: Colors.blue, // 可选背景颜色 ) ``` 上述代码片段展示了如何构建一个简单的 `BottomNavigationBarItem`,其中指定了图标的样式以及对应的标签文字[^2]。 #### 结合 BottomNavigationBar 使用 为了使 `BottomNavigationBarItem` 生效,需将其作为列表项传递给父级组件 `BottomNavigationBar` 的 `items` 参数。下面是一个完整的例子: ```dart import &#39;package:flutter/material.dart&#39;; void main() => runApp(MyApp()); class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( home: BottomNavigationExample(), ); } } class BottomNavigationExample extends StatefulWidget { @override _BottomNavigationExampleState createState() => _BottomNavigationExampleState(); } class _BottomNavigationExampleState extends State<BottomNavigationExample> { int currentIndex = 0; final List<Widget> screens = [ Center(child: Text(&#39;Screen 1&#39;)), Center(child: Text(&#39;Screen 2&#39;)), Center(child: Text(&#39;Screen 3&#39;)) ]; void onTabTapped(int index) { setState(() { currentIndex = index; }); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar(title: Text(&#39;Bottom Navigation Bar Example&#39;)), body: screens[currentIndex], bottomNavigationBar: BottomNavigationBar( onTap: onTabTapped, currentIndex: currentIndex, items: [ BottomNavigationBarItem( icon: Icon(Icons.home), label: &#39;Home&#39; ), BottomNavigationBarItem( icon: Icon(Icons.search), label: &#39;Search&#39; ), BottomNavigationBarItem( icon: Icon(Icons.person), label: &#39;Profile&#39; ) ], ), ); } } ``` 此示例程序演示了一个具有三个选项卡的应用界面,并且当点击同的按钮时会更新显示的内容页面。 #### 注意事项 - 图标和文本应保持简洁明了以便于用户快速识别当前所处位置。 - 如果需要更复杂的交互逻辑可以考虑引入第三方库或者自定义绘制方法。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值