В настоящее время мой Composable выглядит так:
Код: Выделить всё
// Main screen
fun SearchCardScreen(
viewModel: SuggestionVM = koinViewModel(),
navController: NavController
) {
val searchState by viewModel.state.collectAsStateWithLifecycle()
MainSearchCard(
searchState = searchState,
onEvent = viewModel
)
}
@Composable
fun MainSearchCard(
searchState: SearchState,
onEvent: SearchEvents, // not sure about this
)
Код: Выделить всё
interface SearchEvents {
fun onFromChanged(value: String)
fun onToChanged(value: String)
fun swapStations()
fun openDatePicker()
fun search()
// ... total 12 functions here
}
Код: Выделить всё
class SuggestionVM(...) : ViewModel(), SearchEvents {
// overrides for all 12 functions
}
Я вижу 3 разных варианта, но не знаю, что выбрать:
Пример варианта
Передать интерфейс с 12 методами (текущий)
onEvent: SearchEvents
Использовать один обработчик событий с запечатанным классом
onEvent: (SearchEvent) -> Unit
Передавать 12 отдельных обратных вызовов
onFromChange, onToChange, ...
Какой вариант рекомендуется в Jetpack Compose для чистой архитектуры и производительности?
Должен ли я:
- Передавать ViewModel напрямую (не следует этого делать),
- Передавать интерфейс, например SearchEvents,
- Использовать обратный вызов одного события с запечатанным классом события
- Или передать 12 отдельных обратных вызовов?
Подробнее здесь: https://stackoverflow.com/questions/797 ... s-or-12-ca
Мобильная версия