Kotlin Multiplatform Academy · Урок

Обработка намерений и действий пользователя

Изменяйте состояние в ответ на события интерфейса

Урок 3 из 413 шагов

«Обработка намерений и действий пользователя» — бесплатный урок Kotlin Multiplatform Academy на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Kotlin Multiplatform Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Kotlin Multiplatform Academy содержит 4 уроков всего.

Части этого урока еще не переведены и отображаются на английском.

The UI Asks, You Decide

When a user taps a button, the UI should not run logic itself. It sends an intent to the ViewModel, which decides what happens.

Name Your Intents

Model each possible user action as a sealed class. Now every intent the screen can fire is named, typed and impossible to misspell.

sealed class HomeIntent {
    object Refresh : HomeIntent()
    data class Search(val q: String) : HomeIntent()
}

One Entry Point

Expose a single onIntent function. Every screen event flows through it, giving you one tidy place to route behavior.

fun onIntent(intent: HomeIntent) {
    // route to the right handler
}

when Routes Each Action

Inside onIntent, a when matches each intent type. Because the class is sealed, the compiler ensures you cover every case.

when (intent) {
    HomeIntent.Refresh -> refresh()
    is HomeIntent.Search -> search(intent.q)
}

Handlers Update State

Each handler does its work, then updates the StateFlow. The UI re-renders from that single state, exactly as before.

private fun refresh() = scope.launch {
    _state.update { it.copy(isLoading = true) }
}

Why Not Public Methods?

You could expose many public methods, but one intent channel makes the screen's whole contract visible in one type. Clean and testable.

Carry Data in the Intent

Intents that need input use a data class. The user's query or id rides along inside the action itself.

data class Search(val query: String) : HomeIntent()

One-Off Events Are Different

State persists, but a toast or navigation happens once. For these one-off events use a Channel or SharedFlow, not StateFlow.

Emit Events with a Channel

Hold a private Channel for events and expose it as a Flow. The UI collects it to show messages or navigate just once.

private val _events = Channel<String>()
val events = _events.receiveAsFlow()

Both Apps, Same Flow

Android sends intents from Compose, iOS from SwiftUI, but they hit the same onIntent. Behavior can never drift between platforms.

A Predictable Loop

Intent in, state out: this one-way loop makes the screen easy to reason about, debug and test. No hidden side paths.

Quick Check

Let's check how UI events should reach shared logic.

Recap

Model actions as a sealed intent type, route them through one onIntent, and update state from there. Use a Channel for one-off events. 🚀

Можно начать бесплатно

Изучай Kotlin с ИИ-репетитором — бесплатно

Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.

Курсы
30
Уроки
120

Часто задаваемые вопросы

Урок «Обработка намерений и действий пользователя» бесплатный?

Да — полный текст урока «Обработка намерений и действий пользователя» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Kotlin Multiplatform Academy, подпишись на CoddyKit PRO. Курс Kotlin Multiplatform Academy содержит 4 уроков всего.

Чему я научусь в уроке «Обработка намерений и действий пользователя»?

Изменяйте состояние в ответ на события интерфейса Ты практикуешь Kotlin Multiplatform Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Kotlin Multiplatform Academy?

Предыдущий опыт не требуется. Kotlin Multiplatform Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.

Сколько времени занимает урок «Обработка намерений и действий пользователя»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Kotlin Multiplatform Academy?

Да. Каждый урок Kotlin Multiplatform Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Кроссплатформенная основа ViewModel
  2. Предоставление состояния интерфейса как StateFlow
  3. Обработка намерений и действий пользователя
  4. Привязка ViewModel к каждому интерфейсу
← Назад к Kotlin Multiplatform Academy