temp
Material Design 是围绕三大要素构建的:Color、Typography、Shape。
Material Design 建议避免在深色主题中使用大面积的明亮颜色。
一种常见模式是在浅色主题中将容器设为 primary 颜色,并在深色主题中将其设为 surface 颜色;许多组件都默认使用此策略
状态提升
Compose 中的状态提升是一种将状态移至可组合函数的调用方以使可组合函数无状态的模式。Jetpack Compose 中的常规状态提升模式是将状态变量替换为两个参数:
- value: T:要显示的当前值
- onValueChange: (T) -> Unit:请求更改值的事件,包含一个新值 T
其中,此值表示任何可修改的状态。
状态下降、事件上升的这种模式称为单向数据流 (UDF),而状态提升就是我们在 Compose 中实现此架构的方式。如需了解相关详情,请参阅 Compose 架构文档。
优点
- 单一可信来源:通过移动状态,而不是复制状态,我们可确保只有一个可信来源。这有助于避免 bug。
- 可共享:可与多个可组合函数共享提升的状态。
- 可拦截:无状态可组合函数的调用方可以在更改状态之前决定忽略或修改事件。
- 分离:无状态可组合函数的状态可以存储在任何位置。例如,存储在 ViewModel 中。
规则
要点: 提升状态时,有三条规则可帮助您弄清楚状态应去向何处:
- 状态应至少提升到使用该状态(读取)的所有可组合函数的最低共同父项 。
- 状态应至少提升到它可以发生变化(写入)的最高级别 。
- 如果两种状态发生变化以响应相同的事件,它们应提升到同一级别 。
您可以将状态提升到高于这些规则要求的级别,但如果未将状态提升到足够高的级别,则遵循单向数据流会变得困难或不可能。
要点:设计可组合函数的最佳实践是仅向它们传递所需要的参数。