【问题标题】:Production example of Jetpack Compose App?Jetpack Compose App 的生产示例?
【发布时间】: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


    【解决方案1】:

    你有:

    【讨论】:

      【解决方案2】:
      猜你喜欢
      • 1970-01-01
      • 2020-12-16
      • 2022-07-16
      • 2022-07-11
      • 1970-01-01
      • 2023-01-22
      • 2021-08-04
      • 2021-04-26
      • 2022-06-10
      相关资源
      最近更新 更多