【发布时间】:2022-09-30 18:13:56
【问题描述】:
是否有 Jetpack Compose App 的开源生产示例?我想检查如何处理复杂的状态在撰写?
我正在将整个应用程序重写为 Compose,并坚持如何表示屏幕和组件的复杂状态。
例如,让我们有一些电影应用程序的过滤器屏幕,我们可以在其中选择/取消选择流派、评级、县、年份等。
如何表示整个Filter屏幕的状态?
enum class FilterType {
Genre,
Rating,
Country,
Year,
}
class FilterItemState1(
val name: String,
val type: FilterType,
selected: Boolean
) {
var selected by mutableStateOf(selected)
}
data class FilterItemState2(
val name: String,
val type: FilterType,
val selected: Boolean,
)
Option 1:
data class FilterScreenState(
val listOfFilters: List<FilterItemState1>
)
If you now want to change selection item you change observable selected variable:
item.selected = !item.selected
Option 2:
data class FilterScreenState(
val listOfFilters: SnapshotStateList<FilterItemState>
)
If you now want to change selection item you change element inside observable listOfFilters:
state.listOfFilters.set(index, item.copy(selected = !item.selected))
哪个选项更好,什么时候应该使用一个或另一个?最好有一些生产 Compose 应用程序作为参考代码。
标签: android android-jetpack-compose android-jetpack