SuperAPI AI 工具集

hidden-setting-does-not-clear-the-stored-value

编程与开发

查看项目

更新于 10-17 16:16

技能介绍

用途

这条技能针对一类 Kotlin/Compose 应用中的隐蔽缺陷:某个样式或效果选项在低于某系统版本或能力门槛时已从设置选择器中隐藏,但该选项对应的效果仍会以损坏的状态呈现。核心问题是:隐藏选择项只阻止用户从现在起选择它,对偏好存储中已有的值没有任何作用。因此资料主张,真正的防御必须放在渲染处,而不是信任设置页的过滤。

主要能力与做法

资料建议用一个按能力命名的 expect/actual 布尔函数,例如 isLyricsBlurSupported():在 Android 上以真实的系统版本作为下限判断,在 Desktop 上直接返回 true,并为每个渲染点在读取偏好时自行调用,而不是读取别处算好并传下来的标志。函数按能力而不是按系统版本或平台命名,因为两个 actual 实现出于互不相关的理由而不同。

适用场景

资料给出的例子是 Compose 的 Modifier.blur:在 Android API 31 以下没有 RenderEffect 支撑,该修饰符静默地不产生效果,既不抛异常也不写日志。因此围绕模糊效果构建的样式需要真实的能力判断。

使用方式与限制

资料把它定位为一种“纯谓词、可重复调用”的模式,不建议为了优化而把它提升为共享状态;只有当检查本身昂贵时,提升才有收益。它还区分了此类固定答案的能力检查与需要在组合期间变化的能力检查(窗口大小、保持唤醒、画中画模式)。验证方面,资料给出在 composeApp 模块根目录运行的 grep 命令,用于确认能力声明存在 expect 与两个 actual,并检查每个调用点都在读取偏好处自行调用该函数,而不是使用裸变量。

暂未提供的细节

资料未提供该函数在 iOS 等其他平台上的实现、完整代码文件、发版流程或与具体应用的集成说明;上述 grep 命令是否适用于其他项目结构也暂未说明。