跳到正文
cccskills
免费在 GitHub 公开

compose-ui

Best practices for building UI with Jetpack Compose, focusing on state hoisting, detailed performance optimizations, and theming. Use this when writing or refactoring Composable functions.

中文简介正在准备中。当前显示原文说明。

查看安装方法

包含的文件(1)

  • SKILL.md2.6 KB

SKILL.md(原文)

安装前可以查看交给 AI 代理的指令内容。

Jetpack Compose Best Practices

Instructions

Follow these guidelines to create performant, reusable, and testable Composables.

1. State Hoisting (Unidirectional Data Flow)

Make Composables stateless whenever possible by moving state to the caller.

  • Pattern: Function signature should usually look like:
    @Composable
    fun MyComponent(
        value: String,              // State flows down
        onValueChange: (String) -> Unit, // Events flow up
        modifier: Modifier = Modifier // Standard modifier parameter
    )
    
  • Benefit: Decouples the UI from simple state storage, making it easier to preview and test.
  • ViewModel Integration: The screen-level Composable retrieves state from the ViewModel (viewModel.uiState.collectAsStateWithLifecycle()) and passes it down.

2. Modifiers

  • Default Parameter: Always provide a modifier: Modifier = Modifier as the first optional parameter.
  • Application: Apply this modifier to the root layout element of your Composable.
  • Ordering matters: padding().clickable() is different from clickable().padding(). Generally apply layout-affecting modifiers (like padding) after click listeners if you want the padding to be clickable.

3. Performance Optimization

  • remember: Use remember { ... } to cache expensive calculations across recompositions.
  • derivedStateOf: Use derivedStateOf { ... } when a state changes frequently (like scroll position) but the UI only needs to react to a threshold or summary (e.g., show "Jump to Top" button). This prevents unnecessary recompositions.
    val showButton by remember {
        derivedStateOf { listState.firstVisibleItemIndex > 0 }
    }
    
  • Lambda Stability: Prefer method references (e.g., viewModel::onEvent) or remembered lambdas to prevent unstable types from triggering recomposition of children.

4. Theming and Resources

  • Use MaterialTheme.colorScheme and MaterialTheme.typography instead of hardcoded colors or text styles.
  • Organize simple UI components into specific files (e.g., DesignSystem.kt or Components.kt) if they are shared across features.

5. Previews

  • Create a private preview function for every public Composable.
  • Use @Preview(showBackground = true) and include Light/Dark mode previews if applicable.
  • Pass dummy data (static) to the stateless Composable for the preview.

评价

还没有评价。欢迎分享你的使用感受。

评论

无需登录即可发表。欢迎分享使用感受、提问,或说明在哪些环境下无法运行。

还没有评论。来写第一条吧。

提交后会立即公开。请勿填写邮箱、电话等个人信息。URL 最多 2 个。

0 / 1000 字

此表单受 reCAPTCHA 保护,适用 Google 的隐私权政策和服务条款。

同一仓库的技能

Expert checklist and prompts for auditing and fixing Android accessibility issues, especially in Jetpack Compose.

中文简介正在准备中。当前显示原文说明。

new-silvermoon/awesome-android-agent-skills9812026年7月28日 更新

Expert guidance on setting up and maintaining a modern Android application architecture using Clean Architecture and Hilt. Use this when asked about project structure, module setup, or dependency injection.

中文简介正在准备中。当前显示原文说明。

new-silvermoon/awesome-android-agent-skills9812026年7月28日 更新

Authoritative rules and patterns for production-quality Kotlin Coroutines onto Android. Covers structured concurrency, lifecycle integration, and reactive streams.

中文简介正在准备中。当前显示原文说明。

new-silvermoon/awesome-android-agent-skills9812026年7月28日 更新

Guidance on implementing the Data Layer using Repository pattern, Room (Local), and Retrofit (Remote) with offline-first synchronization.

中文简介正在准备中。当前显示原文说明。

new-silvermoon/awesome-android-agent-skills9812026年7月28日 更新

Production-ready scripts for Android app testing, building, and automation. Provides semantic UI navigation, build automation, log monitoring, and emulator lifecycle management. Optimized for AI agents with minimal token output.

中文简介正在准备中。当前显示原文说明。

new-silvermoon/awesome-android-agent-skills9812026年7月28日 更新

Expert guidance on setting up scalable Gradle build logic using Convention Plugins and Version Catalogs.

中文简介正在准备中。当前显示原文说明。

new-silvermoon/awesome-android-agent-skills9812026年7月28日 更新

查看 new-silvermoon 的全部技能

报告此技能的问题