Compose Multiplatform Patterns
researched 2026-05-25· 0 sources · 9 concepts · skill compose-multiplatform-patterns
使用 Compose Multiplatform 和 Jetpack Compose 构建跨 Android、iOS、桌面和 Web 的共享 UI 的模式。涵盖状态管理、导航、主题和性能。
Compose 多平台模式
- 使用 Compose Multiplatform 和 Jetpack Compose 构建跨 Android、iOS、桌面和 Web 的共享 UI 的模式。涵盖状态管理、导航、主题和性能。 [source]
何时启用
ViewModel + 单一状态对象
- 使用单个数据类表示屏幕状态。将其暴露为 StateFlow 并在 Compose 中收集: [source]
事件接收器模式
- 对于复杂屏幕,使用密封接口表示事件,而非多个回调 lambda: [source]
类型安全导航(Compose Navigation 2.8+)
- 将路由定义为 @Serializable 对象: [source]
对话框和底部抽屉导航
- 使用 dialog() 和覆盖层模式,而非命令式的显示/隐藏: [source]
用于可跳过重组的稳定类型
- 当所有属性都稳定时,将类标记为 @Stable 或 @Immutable: [source]
应避免的反模式
- 在 ViewModel 中使用 mutableStateOf,而 MutableStateFlow 配合 collectAsStateWithLifecycle 对生命周期更安全 [source]
- 将 NavController 深入传递到可组合项中 —— 应传递 lambda 回调 [source]
- 在 @Composable 函数中进行繁重计算 —— 应移至 ViewModel 或 remember {} [source]
- 使用 LaunchedEffect(Unit) 作为 ViewModel 初始化的替代 —— 在某些设置中,它会在配置更改时重新运行 [source]
- 在可组合项参数中创建新的对象实例 —— 会导致不必要的重组 [source]
参考资料
Children
- State Management in KMP (frontier)
- Navigation Patterns (frontier)
- Platform-Specific UI (frontier)
- Performance Optimization (frontier)
Frontier under this node: Navigation Patterns, Performance Optimization, Platform-Specific UI, State Management in KMP