TGViewer
Мобильная разработка Мобильная разработка @mobdevelop · 3.88K subscribers
Post #405 1.22K
Bonsai 🌳 — небольшая библиотека для управления состоянием во ViewModel

Bonsai — это крошечная библиотека управления состоянием без зависимостей, созданная специально для использования во ViewModel. Она облегчает реализацию однонаправленного потока данных (unidirectional data flow) и отделяет логику управления состоянием от UI и бизнес-логики.

Особенности
- Однонаправленный поток данных
- Без внешних зависимостей
- Простота в использовании
- Небольшой размер
- Объединяется с Kotlin Coroutines и Jetpack Compose

Пример использования


class CounterViewModel : BonsaiViewModel<CounterState>(CounterState()) {
fun increment() = reduce { state -> state.copy(count = state.count + 1) }
fun decrement() = reduce { state -> state.count.takeIf { it > 0 }?.let { state.copy(count = it - 1) } ?: state }
}

data class CounterState(val count: Int = 0)


И затем, в Compose:


val state by viewModel.state.collectAsState()
Text("Count: ${state.count}")


https://github.com/adrielcafe/bonsai

#Android
More from @mobdevelop
  1. Sep 15, 2026🎉 Swift 6.4 уже вышел — и релиз получился заметно шире обычного обновления языка. Главное…
  2. Aug 31, 2026ReactOS 0.4.16 вышла с крупным набором обновлений. Главные изменения: - появился новый гра…
  3. Aug 19, 2026✔️ Апдейт ChatGPT: изолированный контекст в Projects, тесты для проверки знаний и правки д…
  4. Jul 12, 2026Docker Desktop на Mac давно ругают за прожорливость. Apple выкатила свой вариант container…
  5. Jun 23, 2026Apple фактически сделала Docker Desktop необязательным на Mac. И полностью бесплатно. Речь…
  6. May 16, 2026Mythos обошёл защиту, в которую Apple вложила 5 лет и миллиарды Три исследователя использо…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →