You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter中NavigationBar标签颜色修改方法咨询

如何修改Flutter NavigationBar的标签文字颜色

NavigationDestination的label参数仅支持字符串,无法直接传入Text组件自定义样式,你可以通过以下两种方式修改标签文字颜色:

方法1:直接给NavigationBar设置labelTextStyle

利用MaterialStateProperty.resolveWith区分选中和未选中状态,针对性设置文字颜色:

bottomNavigationBar: NavigationBar(
  backgroundColor: Colors.lightBlue[100]!,
  // 自定义标签文字样式
  labelTextStyle: MaterialStateProperty.resolveWith((states) {
    // 选中状态下的文字样式
    if (states.contains(MaterialState.selected)) {
      return const TextStyle(color: Colors.white, fontSize: 14);
    }
    // 未选中状态下的文字样式
    return const TextStyle(color: Colors.grey, fontSize: 12);
  }),
  destinations: const [
    NavigationDestination(
      icon: Icon(Icons.home, color: Colors.white),
      label: 'Home',
    ),
    NavigationDestination(
      icon: Icon(Icons.money, color: Colors.white),
      label: 'Expenses',
    ),
  ],
),

方法2:通过ThemeData全局配置

如果需要让所有NavigationBar统一标签样式,可以在MaterialApp的主题中配置:

MaterialApp(
  theme: ThemeData(
    navigationBarTheme: NavigationBarThemeData(
      labelTextStyle: MaterialStateProperty.resolveWith((states) {
        return states.contains(MaterialState.selected)
            ? const TextStyle(color: Colors.white)
            : const TextStyle(color: Colors.grey);
      }),
    ),
  ),
  home: const YourHomePage(),
);

这两种方式都是通过Flutter提供的状态样式机制,控制NavigationBar内部生成的标签文本组件样式,完美适配选中/未选中的状态切换。

内容的提问来源于stack exchange,提问作者Audrius Šaučiūnas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 05:35:00