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
相关产品推荐
相关产品推荐

