声明式 UI
描述「界面应该是什么样」,而不是一步步改控件。状态变了,由框架把界面对齐到新描述。
白话扫一眼 Compose 常见词。可筛选、可点分类;正文里的术语也会链回这里。
描述「界面应该是什么样」,而不是一步步改控件。状态变了,由框架把界面对齐到新描述。
找到控件,再 setXxx 去改它。数据和 View 是两张皮,忘了刷新就会错位。
用来描述 UI 的 Kotlin 函数。嵌套调用即界面结构,属性用具名参数传入。
框架根据 Composable 调用树,搭出当前这一帧的界面描述。
状态变了,只重跑依赖该状态的 Composable,不是整页死刷。
给组件挂尺寸、边距、背景、点击等的统一入口;链式调用,顺序有意义。
只在特定容器里才有的 API,如 Scaffold 的 topBar、Lazy 的 item、Row 里的 weight。
不装包,在 IDE 里直接预览 Composable,可配多尺寸、深浅色。
会随时间变、且变化应反映到界面上的数据。是 UI = f(state) 的输入。
重组时尽量保住同一个对象/值,避免每次重跑都重新初始化。
在 remember 基础上还能扛住旋转等配置变化(类似存进 Bundle)。
状态放到能共享的父级;子组件只读数据,用回调上报事件。
State 向下传,事件向上传。界面不直接改「别人的」真相源。
业务状态容器;界面通常只渲染一份不可变 UiState 快照。
按生命周期安全地把 Flow / StateFlow 收成 Compose State,避免后台白收。
可观察的 List / Map;增删改会触发读过它的界面重组。普通 List 原地改无效。
由其他 State 计算得出的派生状态;依赖结果不变时可减少无用下游重组。
身份(如 userId)变化时丢掉旧 remember 状态,避免串数据。
把对 Compose State 的读取变成 Flow,便于防抖、落盘或桥接仓库。
在组合内把异步结果收成 State;轻量岛可用,正式业务优先 ViewModel。
在长生命周期 Effect 里始终读到最新回调 / 参数,又不必重启 Effect。
隐式向子树传递依赖(如主题);能参数传递时优先显式传参。
StateFlow 表示当前快照;SharedFlow 常用于一次性 UI 事件(导航、Snackbar)。
除了返回 UI 之外对外界的影响:监听、导航、Snackbar、写非 Compose 对象。Composable 会重跑,不能写在函数体里。
线内:Composable 只描述 UI = f(state)。线外:Effect / 回调 / ViewModel 才「做事」。选错边比记错 API 更常见。
进入组合时起协程;离开组合或 key 变化时取消。适合收集一次性事件、滚动、聚焦;业务请求仍放 ViewModel。
需要成对「注册 / 反注册」时用,离开组合时走 onDispose。
在组合内拿到可在点击等回调里启动协程的作用域,随离开组合而取消。不是进页即跑。
进入组合时接管系统返回,离开自动卸掉。
对齐 Activity 前台/后台;Home 再回来时 LaunchedEffect(Unit) 不会重跑。
每次成功组合之后同步执行,把 Compose 状态写给非 Compose 对象。不要拿它发网络。
Material 3 颜色、字体、形状的统一入口,子树里用 MaterialTheme.colorScheme 等读取。
跟系统或手动切换深浅;Compose 侧常用 isSystemInDarkTheme 与配色方案。
让读屏等辅助功能读懂控件含义;图片、图标按钮尤其需要。
从字符串资源读文案,便于多语言与统一改字。