SuperAPI AI 工具集

compose-ui

前端与建站

查看项目

更新于 10-15 17:02

技能介绍

用途

该技能用于指导 Android 应用中使用 Jetpack Compose 构建界面时的实践方式,目标是创建高性能、可复用、可测试的 Composable。适用于编写或修改 Compose UI 代码的场景。

主要能力与实践要点

1. 状态提升(单向数据流)

尽可能让 Composable 保持无状态,把状态移动到调用方。推荐的函数签名模式为:

@Composable
fun MyComponent(
    value: String,              // State flows down
    onValueChange: (String) -> Unit, // Events flow up
    modifier: Modifier = Modifier // Standard modifier parameter
)

这样做的收益是让 UI 与简单的状态存储解耦,更易于预览和测试。在 ViewModel 集成方面,屏幕级 Composable 从 ViewModel 获取状态(viewModel.uiState.collectAsStateWithLifecycle())并向下传递。

2. Modifier

  • 始终提供 modifier: Modifier = Modifier 作为第一个可选参数。
  • 将该 modifier 应用于 Composable 的根布局元素。
  • 顺序很重要:padding().clickable() 与 clickable().padding() 不同。通常如果希望内边距区域可点击,应在点击监听之后应用影响布局的 modifier(如 padding)。

3. 性能优化

  • remember:使用 remember { ... } 跨重组缓存开销较大的计算。
  • derivedStateOf:当状态频繁变化(如滚动位置)而 UI 只需对阈值或汇总结果作出反应时(例如显示“Jump to Top”按钮),使用它来避免不必要的重组:
val showButton by remember {
    derivedStateOf { listState.firstVisibleItemIndex > 0 }
}
  • Lambda 稳定性:优先使用方法引用(如 viewModel::onEvent)或经过 remember 的 lambda,以避免不稳定类型触发子级重组。

4. 主题与资源

  • 使用 MaterialTheme.colorScheme 和 MaterialTheme.typography,而不是硬编码颜色或文本样式。
  • 如果简单 UI 组件在多个功能间共享,按文件组织它们(如 DesignSystem.kt 或 Components.kt)。

5. 预览

  • 为每个公开 Composable 创建私有的预览函数。
  • 使用 @Preview(showBackground = true),如适用可包含浅色/深色模式预览。
  • 向无状态 Composable 传入静态的占位数据用于预览。

限制

资料未提供该技能的安装命令、使用方法、适用平台版本、收费情况或效果说明。