Material3 MenuItemColors.copy()无法使用,报“unresolved reference”错误
结论
这是Material3 1.2.0-beta01版本文档与实际代码不一致的bug,不是你的理解误区。
原因说明
MenuItemColors在该版本中是一个接口,而非Kotlin的data class——只有data class会自动生成公开的copy()方法,接口本身不会提供这个方法。- 官方文档错误标注了该接口存在
copy()方法,但实际代码里既没有在接口定义中声明,也没有提供对应的扩展函数实现。
临时替代方案
如果需要复用或修改已有MenuItemColors的配置,直接通过MenuDefaults.itemColors()重新构建实例,传入需要调整的参数即可:
import androidx.compose.material3.MenuDefaults import androidx.compose.material3.MenuItemColors import androidx.compose.ui.graphics.Color @Composable fun CopyColorsWorkaround() { val originalColors = MenuDefaults.itemColors() // 基于原有配置修改指定参数,比如替换选中态图标颜色 val modifiedColors = MenuDefaults.itemColors( selectedTextColor = originalColors.selectedTextColor, selectedIconColor = Color.Red, // 根据需求添加其他需要保留或修改的参数 disabledTextColor = originalColors.disabledTextColor ) }
版本相关提示
- 1.2.0-beta02版本存在无法解决的
IncompatibleClassChangeErrors,暂时不建议升级,等待后续稳定版本修复。 - 后续版本官方大概率会修复文档错误,或调整
MenuItemColors的实现使其支持copy()方法,建议关注Material3版本更新日志。
内容的提问来源于stack exchange,提问作者wholerabbit
相关产品推荐
相关产品推荐

