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

SwiftUI:如何获取List在明暗模式下的背景色并适配行背景?

List行背景色适配方案

直接用内置颜色匹配List背景

Flutter有现成的内置颜色可以直接对应List的默认背景,不需要硬写固定色值:

  • 用Theme.of(context).colorScheme.surface:这个颜色会自动跟随系统的浅色/深色模式变化,就是List本身的背景色,给行的容器设置这个颜色就能完全匹配。
  • 要是用的Material3设计规范,部分场景下List背景会用Theme.of(context).colorScheme.surfaceContainerLow,不过大部分情况surface就够用。

手动指定颜色(内置颜色不适用时)

如果必须手动设置颜色:

浅色模式下List默认背景色

  • Material2规范里,浅色List默认背景是#F5F5F5(对应Colors.grey[50])
  • Material3规范里,浅色List默认背景是#FAFAFA(对应Colors.grey[5])

适配深浅模式的代码示例

通过判断当前的亮度模式,动态切换颜色:

Container(
  color: MediaQuery.platformBrightnessOf(context) == Brightness.light
      ? Colors.grey[50] // 浅色模式匹配List背景
      : Colors.black,    // 深色模式设为纯黑
  child: ListTile(
    title: Text("自定义背景行"),
  ),
)

也可以通过Theme的brightness属性判断:

Container(
  color: Theme.of(context).brightness == Brightness.light
      ? Color(0xFFF5F5F5)
      : Colors.black,
  child: ListTile(title: Text("自定义行")),
)

内容的提问来源于stack exchange,提问作者Tom S

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 15:27:09