0Pricing
Kotlin Multiplatform Academy · Урок

Кроссплатформенная основа ViewModel

Храните состояние и область, доступные обеим платформам

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

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

Why Share the ViewModel?

A ViewModel holds screen state and logic. In KMP you write it once in shared code so both apps stay perfectly in sync. 🎉

Logic, Not Pixels

Your shared ViewModel decides what the screen shows. The native UI decides how to draw it. That split is the heart of KMP.

A Plain Class to Start

At its core a ViewModel is just a normal Kotlin class living in commonMain. No magic, no framework required to begin.

class CounterViewModel {
    var count = 0
}

It Needs a Scope

Async work needs a CoroutineScope. Every ViewModel keeps one so it can launch coroutines and cancel them later cleanly.

val scope = CoroutineScope(
    SupervisorJob() + Dispatchers.Main
)

SupervisorJob Keeps Siblings Alive

Using a SupervisorJob means one failing coroutine will not cancel the others in the same scope. Failures stay isolated.

A Reusable Base Class

Put the shared scope in an open base class so every screen's ViewModel inherits the same lifecycle plumbing for free.

open class BaseViewModel {
    protected val scope =
        CoroutineScope(SupervisorJob() + Dispatchers.Main)
}

Always Provide Cleanup

Add a clear() method that cancels the scope. When the screen goes away, the platform calls it so no work leaks.

open fun clear() {
    scope.cancel()
}

Extend the Base

Now a real screen just extends the base. It gets a ready scope and clean shutdown without repeating the boilerplate.

class HomeViewModel : BaseViewModel() {
    // screen logic here
}

androidx Has Its Own ViewModel

KMP now ships a multiplatform androidx.lifecycle.ViewModel. It gives you a managed viewModelScope on every target.

viewModelScope for Free

Extend that ViewModel and you get a built-in viewModelScope that is cancelled automatically when the ViewModel clears.

class HomeViewModel : ViewModel() {
    fun load() = viewModelScope.launch { }
}

One Class, Both Platforms

Whichever base you pick, the same shared ViewModel drives Android and iOS. Write the behavior once, trust it everywhere.

Quick Check

Let's lock in why a ViewModel carries a scope.

Recap

A shared ViewModel is a plain Kotlin class with a CoroutineScope and a clear() to cancel it. Build once, reuse on both apps. 🚀

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

Урок «Кроссплатформенная основа ViewModel» бесплатный?

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

Чему я научусь в уроке «Кроссплатформенная основа ViewModel»?

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

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

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

Сколько времени занимает урок «Кроссплатформенная основа ViewModel»?

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

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

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

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

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