该技能的核心用途是解决 Compose 中可选装饰效果的开关管理问题。一个可被用户关闭的装饰效果包含三部分:存储的偏好设置、UI 读取它的方式、以及绘制代码。只有绘制代码是共享的,因此开关逻辑应放在共享原语中,而不是在每个调用点分别判断。
主要能力:1)通过 staticCompositionLocalOf { true } 定义主题级局部值,默认开启,避免脱离主题的预览或第二窗口出现错误外观;2)在共享 Modifier 扩展函数(如 decorSurface)中读取该局部值,关闭时走廉价绘制路径,但保留 clip(shape) 和尺寸逻辑,确保几何不变;3)将守卫放在 rememberGraphicsLayer() 和交互持有者之前,使关闭状态不分配图层、不启动动画、不安装指针输入;4)对于确实需要在组合前分支的调用点,保留显式比较,但确保两个分支读取同一存储值;5)主题参数默认值必须与局部值默认值一致;6)不通过参数传递开关标志,避免调用点遗漏。
使用方式:定义局部值并让 AppTheme 提供它;在共享原语中读取并守卫;用 grep 命令验证局部值声明、守卫位置和调用点;用截图对比检查关闭路径是否只改变绘制而不改变几何。
适用场景:Kotlin/Compose 应用中存在可由用户关闭的装饰性表面处理,且该处理有多个调用点。
限制:该技能不涉及具体模糊或发光效果的实现细节;部分调用点(如切换不同 composable 的导航栏或播放器容器)需要保留原始设置比较,文中给出的数量仅为示例项目中的观察值,不构成通用规则。