Вопрос рассматривает управление сложным состоянием с несколькими фильтрами.
Используйте:
Единый State с полями для каждого фильтра.
Отложенное применение (debounce для поиска).
Изоляцию логики фильтрации в отдельный класс.
State:data class State(
val query: String = "",
val dateRange: DateRange? = null,
val status: Status? = null,
val results: List<Item> = emptyList()
)Debounce для поиска:
flow.debounce(300.ms).collect { query -> updateState { copy(query = query) } }Комбинирование фильтров:
fun applyFilters(): List<Item> {
return data.filter { item ->
(query.isEmpty() || item.name.contains(query)) &&
(dateRange == null || item.date in dateRange) &&
(status == null || item.status == status)
}
}Вывод:
Группируйте фильтры в одном State и применяйте их атомарно.