home.social

#viewmodel — Public Fediverse posts

Live and recent posts from across the Fediverse tagged #viewmodel, aggregated by home.social.

  1. От State к Event: как два sealed class закрывают архитектуру Android-экрана в Kotlin

    Хаотичные события в Android (навигация, тосты, запросы) часто превращаются в источник багов и нечитаемого кода. В этой статье вы узнаете, как использовать sealed-интерфейсы Kotlin для создания полной, типобезопасной модели экрана, где состояния и события управляются отдельно и предсказуемо. Вы научитесь превращать одноразовые побочные эффекты в строго контролируемый поток команд, получите compile-time гарантии, избавитесь от багов с поворотом экрана и сможете легко тестировать любые события UI. Рассмотренный подход не только защищает от ошибок, но и кардинально упрощает масштабирование логики. Вы сможете добавлять новые события без риска сломать существующую функциональность, а ваш UI-слой станет чистым и декларативным. При этом всё, что нужно для внедрения - это понимание базовых принципов Flow и ViewModel.

    habr.com/ru/articles/993884/

    #Android #Kotlin #sealed_class #sealed_interface #события #состояние #ViewModel #SharedFlow #типобезопасность #MVI

  2. От State к Event: как два sealed class закрывают архитектуру Android-экрана в Kotlin

    Хаотичные события в Android (навигация, тосты, запросы) часто превращаются в источник багов и нечитаемого кода. В этой статье вы узнаете, как использовать sealed-интерфейсы Kotlin для создания полной, типобезопасной модели экрана, где состояния и события управляются отдельно и предсказуемо. Вы научитесь превращать одноразовые побочные эффекты в строго контролируемый поток команд, получите compile-time гарантии, избавитесь от багов с поворотом экрана и сможете легко тестировать любые события UI. Рассмотренный подход не только защищает от ошибок, но и кардинально упрощает масштабирование логики. Вы сможете добавлять новые события без риска сломать существующую функциональность, а ваш UI-слой станет чистым и декларативным. При этом всё, что нужно для внедрения - это понимание базовых принципов Flow и ViewModel.

    habr.com/ru/articles/993884/

    #Android #Kotlin #sealed_class #sealed_interface #события #состояние #ViewModel #SharedFlow #типобезопасность #MVI

  3. От State к Event: как два sealed class закрывают архитектуру Android-экрана в Kotlin

    Хаотичные события в Android (навигация, тосты, запросы) часто превращаются в источник багов и нечитаемого кода. В этой статье вы узнаете, как использовать sealed-интерфейсы Kotlin для создания полной, типобезопасной модели экрана, где состояния и события управляются отдельно и предсказуемо. Вы научитесь превращать одноразовые побочные эффекты в строго контролируемый поток команд, получите compile-time гарантии, избавитесь от багов с поворотом экрана и сможете легко тестировать любые события UI. Рассмотренный подход не только защищает от ошибок, но и кардинально упрощает масштабирование логики. Вы сможете добавлять новые события без риска сломать существующую функциональность, а ваш UI-слой станет чистым и декларативным. При этом всё, что нужно для внедрения - это понимание базовых принципов Flow и ViewModel.

    habr.com/ru/articles/993884/

    #Android #Kotlin #sealed_class #sealed_interface #события #состояние #ViewModel #SharedFlow #типобезопасность #MVI

  4. От State к Event: как два sealed class закрывают архитектуру Android-экрана в Kotlin

    Хаотичные события в Android (навигация, тосты, запросы) часто превращаются в источник багов и нечитаемого кода. В этой статье вы узнаете, как использовать sealed-интерфейсы Kotlin для создания полной, типобезопасной модели экрана, где состояния и события управляются отдельно и предсказуемо. Вы научитесь превращать одноразовые побочные эффекты в строго контролируемый поток команд, получите compile-time гарантии, избавитесь от багов с поворотом экрана и сможете легко тестировать любые события UI. Рассмотренный подход не только защищает от ошибок, но и кардинально упрощает масштабирование логики. Вы сможете добавлять новые события без риска сломать существующую функциональность, а ваш UI-слой станет чистым и декларативным. При этом всё, что нужно для внедрения - это понимание базовых принципов Flow и ViewModel.

    habr.com/ru/articles/993884/

    #Android #Kotlin #sealed_class #sealed_interface #события #состояние #ViewModel #SharedFlow #типобезопасность #MVI

  5. [Перевод] Загрузка данных во ViewModel: рекомендации и Flow-based архитектура

    Дискуссии об архитектуре Android часто перерастают в жаркие споры, вызывая и восторг, и резкую критику. Писать на такие темы непросто, и именно поэтому это стоит делать. Как показывает обсуждение в Твиттере , многие разработчики загружают данные в блоке init {} во ViewModel. Хотя подход кажется логичным, у него есть архитектурные недостатки. Автор статьи описал проблемы такого подхода и предложил гибкую альтернативу с использованием Flow.

    habr.com/ru/articles/950494/

    #android #viewmodel #архитектура #flow #kotlin

  6. lateinit вместо nullable: пять ошибок

    Привет, Хабр! Сегодня разберёмся, почему попытка «избавиться от ? любой ценой» приводит к проблемам, и как жить с этим вообще жить.

    habr.com/ru/companies/otus/art

    #kotlin #Android #Jetpack_Compose #Compose_анимации #UIанимации_Android #Kotlin_Flow #Архитектура_Androidприложений #viewmodel #hilt

  7. [Перевод] Ликбез по UseCase’ам Android: от базовых реализаций до мультипровайдерных и многомодульных систем — Часть 1

    Чистая архитектура — не просто модный термин, а способ держать код в узде по мере роста Android-приложения. В этой статье — подробный разбор того, как выстроить работу с UseCase’ами: от базовой интеграции в ViewModel до сложных кейсов с несколькими провайдерами и платежными системами. Разберёмся, как применять принципы SOLID на практике, не скатываясь в оверинжиниринг — и при этом не жертвовать гибкостью архитектуры.

    habr.com/ru/companies/otus/art

    #android #Kotlin #Мобильная_разработка #UseCase #Чистая_архитектура #SOLID_принципы #ViewModel #koin

  8. [Перевод] Ликбез по UseCase’ам Android: от базовых реализаций до мультипровайдерных и многомодульных систем — Часть 1

    Чистая архитектура — не просто модный термин, а способ держать код в узде по мере роста Android-приложения. В этой статье — подробный разбор того, как выстроить работу с UseCase’ами: от базовой интеграции в ViewModel до сложных кейсов с несколькими провайдерами и платежными системами. Разберёмся, как применять принципы SOLID на практике, не скатываясь в оверинжиниринг — и при этом не жертвовать гибкостью архитектуры.

    habr.com/ru/companies/otus/art

    #android #Kotlin #Мобильная_разработка #UseCase #Чистая_архитектура #SOLID_принципы #ViewModel #koin

  9. Статья 2: Подробнее про MVVM

    Серия статей с очередным разбором MV* шаблонов, но с интересными деталями Даже опытные разработчики смогут найти что-то новое для себя Это вторая статья из серии , в которой подробно разбираем MVVM и является ли класс ViewModel от Google, сущностью ViewModel из шаблона Статья 2: Подробнее про MVVM - 🔨 Функции обратного вызова (Callback) - 🛠 Паттерн Наблюдатель (Observer) - 📜 MVVM (ViewModel) - 🔨 Привязка данных (Data Binding) Найти новое

    habr.com/ru/articles/922984/

    #архитектура #mvvm #templates #callback #observer #viewmodel

  10. Статья 2: Подробнее про MVVM

    Серия статей с очередным разбором MV* шаблонов, но с интересными деталями Даже опытные разработчики смогут найти что-то новое для себя Это вторая статья из серии , в которой подробно разбираем MVVM и является ли класс ViewModel от Google, сущностью ViewModel из шаблона Статья 2: Подробнее про MVVM - 🔨 Функции обратного вызова (Callback) - 🛠 Паттерн Наблюдатель (Observer) - 📜 MVVM (ViewModel) - 🔨 Привязка данных (Data Binding) Найти новое

    habr.com/ru/articles/922984/

    #архитектура #mvvm #templates #callback #observer #viewmodel

  11. Статья 2: Подробнее про MVVM

    Серия статей с очередным разбором MV* шаблонов, но с интересными деталями Даже опытные разработчики смогут найти что-то новое для себя Это вторая статья из серии , в которой подробно разбираем MVVM и является ли класс ViewModel от Google, сущностью ViewModel из шаблона Статья 2: Подробнее про MVVM - 🔨 Функции обратного вызова (Callback) - 🛠 Паттерн Наблюдатель (Observer) - 📜 MVVM (ViewModel) - 🔨 Привязка данных (Data Binding) Найти новое

    habr.com/ru/articles/922984/

    #архитектура #mvvm #templates #callback #observer #viewmodel

  12. Статья 2: Подробнее про MVVM

    Серия статей с очередным разбором MV* шаблонов, но с интересными деталями Даже опытные разработчики смогут найти что-то новое для себя Это вторая статья из серии , в которой подробно разбираем MVVM и является ли класс ViewModel от Google, сущностью ViewModel из шаблона Статья 2: Подробнее про MVVM - 🔨 Функции обратного вызова (Callback) - 🛠 Паттерн Наблюдатель (Observer) - 📜 MVVM (ViewModel) - 🔨 Привязка данных (Data Binding) Найти новое

    habr.com/ru/articles/922984/

    #архитектура #mvvm #templates #callback #observer #viewmodel

  13. Безопасное обновления состояния в ViewModel

    Это краткая заметка о подходе, который я выработал для себя, чтобы обновлять состояние экрана при использовании MVI-like паттерна в ViewModel . Сразу оговорюсь, что классический "полноценный" MVI подразумевает использование редьюсеров, которые решают часть проблем, описанных в этой заметке, но сугубо на мой вкус, этот подход заставляет писать много бойлерплейтного кода.

    habr.com/ru/articles/880108/

    #viewmodel #kotlin #arrow #mvi

  14. Управление настройками с помощью Jetpack DataStore: Простой подход к сохранению данных разных типов

    Всем здравствуйте. Это моя первая статья на такую публику, поэтому просьба не судить строго! :-) При разработке Android-приложений часто возникает необходимость сохранять пользовательские настройки, такие как выбор темы, язык или другие данные пользователя. Jetpack DataStore — это современное решение для хранения таких данных, которое заменяет устаревший SharedPreferences . В этой статье мы рассмотрим, как использовать DataStore для хранения различных типов данных (Boolean, Integer, Float и String) и как интегрировать его с архитектурой MVVM, используя StateFlow для обновления UI. Что такое DataStore? Jetpack DataStore — это библиотека для хранения данных, поддерживающая асинхронное и безопасное чтение и запись данных. Она предоставляет два типа хранилищ: 1. Preferences DataStore : Используется для хранения пар "ключ-значение" (похож на SharedPreferences ). 2. Proto DataStore : Используется для хранения структурированных данных на основе протокольных буферов. В этой статье мы сосредоточимся на Preferences DataStore , которое идеально подходит для хранения настроек приложения.

    habr.com/ru/articles/874034/

    #Jetpack_DataStore #MVVM #ViewModel #Android #Kotlin #Jetpack

  15. Подходы к созданию ViewModel в Android

    В данной статье будут рассмотрены способы создания ViewModel (далее VM) в Android, а также usecase для каждого подхода.

    habr.com/ru/articles/871922/

    #mvvm #viewmodel #viewmodelprovider #android #kotlin

  16. Как я писал суперкастомизированное Android-приложение в 2024 году

    Как я писал супер кастомизированное Android приложение в 2024 году В начале года у меня появилась прикольная идея: сделать Android-приложение, которое будет показывать анимации для алгоритмов сортировки. Чтобы вы сразу поняли, что представляет из себя приложение, на GitHub есть скрины и короткие видео. Давайте по кусочкам разберём мой проект. Читать дальше

    habr.com/ru/companies/ruvds/ar

    #ruvds_статьи #android #android_view #kotlin #application #algorithms #sorting_algorithms #viewmodel #viewmodelprovider #sparse_array #custom_view #bitwise_operators #mvvm #mvi

  17. Как я писал суперкастомизированное Android-приложение в 2024 году

    Как я писал супер кастомизированное Android приложение в 2024 году В начале года у меня появилась прикольная идея: сделать Android-приложение, которое будет показывать анимации для алгоритмов сортировки. Чтобы вы сразу поняли, что представляет из себя приложение, на GitHub есть скрины и короткие видео. Давайте по кусочкам разберём мой проект. Читать дальше

    habr.com/ru/companies/ruvds/ar

    #ruvds_статьи #android #android_view #kotlin #application #algorithms #sorting_algorithms #viewmodel #viewmodelprovider #sparse_array #custom_view #bitwise_operators #mvvm #mvi

  18. Как я писал суперкастомизированное Android-приложение в 2024 году

    Как я писал супер кастомизированное Android приложение в 2024 году В начале года у меня появилась прикольная идея: сделать Android-приложение, которое будет показывать анимации для алгоритмов сортировки. Чтобы вы сразу поняли, что представляет из себя приложение, на GitHub есть скрины и короткие видео. Давайте по кусочкам разберём мой проект. Читать дальше

    habr.com/ru/companies/ruvds/ar

    #ruvds_статьи #android #android_view #kotlin #application #algorithms #sorting_algorithms #viewmodel #viewmodelprovider #sparse_array #custom_view #bitwise_operators #mvvm #mvi

  19. Как я писал суперкастомизированное Android-приложение в 2024 году

    Как я писал супер кастомизированное Android приложение в 2024 году В начале года у меня появилась прикольная идея: сделать Android-приложение, которое будет показывать анимации для алгоритмов сортировки. Чтобы вы сразу поняли, что представляет из себя приложение, на GitHub есть скрины и короткие видео. Давайте по кусочкам разберём мой проект. Читать дальше

    habr.com/ru/companies/ruvds/ar

    #ruvds_статьи #android #android_view #kotlin #application #algorithms #sorting_algorithms #viewmodel #viewmodelprovider #sparse_array #custom_view #bitwise_operators #mvvm #mvi

  20. Как грузить данные во ViewModel?

    Привет, Хабр! Эта статья будет полезна для мобильных разработчиков, потому что в ней обсуждаются различные подходы к первоначальной загрузке данных во вьюмодели (Jetpack ViewModel) при ее использовании в проектах на Jetpack Compose (либо Compose Multiplatform). Тема эта настолько холиварная, что один из самых влиятельных ютуберов в сфере Android-разработки Philip Lackner даже недавно посвятил ей отдельный как всегда очень качественный обзор . Эта статья - во многом ответ и дополнение к нему. Итак, перейдем к сути.

    habr.com/ru/articles/848824/

    #viewmodel #jetpack_compose #android #jetpack_sdk

  21. [Перевод] ViewModels в Android: «за» и «против». Часть 2

    Продолжение первой части цикла. В первой части мы разобрались в причинах, по которым загрузка данных в блоке init{} может помешать прогрессу; изучили наиболее рациональные методы организации пользовательского интерфейса и логики приложения с помощью ViewModels. Также мы обсудили простые решения и важные тактики, позволяющие избежать часто встречающихся подводных камней. В этой части мы продолжим фокусироваться на важных принципах разработки и оптимизации ViewModel в Android, направленных на улучшение архитектуры приложения и повышение его производительности. Рассмотрим подробнее рекомендации, касающиеся раскрытия изменяемых состояний, использования update{} при использовании MutableStateFlows и «ленивого» внедрения зависимостей в конструктор.

    habr.com/ru/companies/otus/art

    #android_разработка #viewmodel #cleancode

  22. Выносите ViewModel из Compose функций

    В нашу жизнь андроид разработчиков уже прочно вошел фреймворк Compose. И при создании composable функций возникает соблазн добавить в качестве параметра viewModel. А уже в самой compose функции подписываться на состояния, которые находятся внутри viewModel. Я хочу рассказать, почему так делать не стоит, а передавать в качестве параметров простые классы.

    habr.com/ru/articles/837790/

    #android #compose #kotlin #viewmodel #refactoring

  23. PinLockSreen на основе KeyStore. Kotlin. Jetpack Compose

    В данной любительской статье разберемся, что такое KeyStore в контексте мобильной разработки, для чего нужен и применим его в крайне легком варианте. Также погрузимся в разработку экрана входа в ваше приложение. Статья будет разделена на 3 так называемых раздела — KeyStore, UI и ViewModel.

    habr.com/ru/articles/831914/

    #kotlin #android_development #android_apps #android #jetpack_compose #keystore #viewmodel #ui #github

  24. PinLockSreen на основе KeyStore. Kotlin. Jetpack Compose

    В данной любительской статье разберемся, что такое KeyStore в контексте мобильной разработки, для чего нужен и применим его в крайне легком варианте. Также погрузимся в разработку экрана входа в ваше приложение. Статья будет разделена на 3 так называемых раздела — KeyStore, UI и ViewModel.

    habr.com/ru/articles/831914/

    #kotlin #android_development #android_apps #android #jetpack_compose #keystore #viewmodel #ui #github

  25. PinLockSreen на основе KeyStore. Kotlin. Jetpack Compose

    В данной любительской статье разберемся, что такое KeyStore в контексте мобильной разработки, для чего нужен и применим его в крайне легком варианте. Также погрузимся в разработку экрана входа в ваше приложение. Статья будет разделена на 3 так называемых раздела — KeyStore, UI и ViewModel.

    habr.com/ru/articles/831914/

    #kotlin #android_development #android_apps #android #jetpack_compose #keystore #viewmodel #ui #github

  26. I really love how sealed classes are a great fit for #ViewModel use cases in #Kotlin.

  27. [Перевод] ViewModels в Android: «за» и «против»

    В этой серии статей мы рассмотрим лучшие практики использования ViewModels в Android с акцентом на основных принципах повышения качества кода. Рассмотрим роль ViewModels в управлении состоянием пользовательского интерфейса и бизнес-логикой, стратегии для ленивого внедрения зависимостей и важность реактивного программирования. Кроме того, обсудим общие подводные камни, которых следует избегать, такие как неправильная инициализация состояния и обнародование изменяемых состояний.

    habr.com/ru/companies/otus/art

    #android #kotlin #kotlin_qa #Viewmodel

  28. ViewModel + Kotlin Multiplatform. Пробуем нативное решение

    Всем привет! На связи Анна Жаркова, руководитель группы мобильной разработки в компании Usetech. Компания Google объявили о своем интересе к Koltin Multiplatform на прошлом Google I/O 2023. Следом был обозначен вектор развития имеющихся решений архитектурных библиотек Jetpack для поддержки KMP. Буквально считанные часы назад компания Google опубликовали ожидаемую многими новинку, а именно ViewModels из библиотеки Lifecycle с поддержкой API Kotlin Multiplatform. И сейчас мы с вами проверим, насколько это удобно, что уже готово, а что нужно доработать. Для начала освежим, с чем же мы работали до ViewModels из Lifecycle. Сами по себе ViewModel как часть паттерна MVVM применительно к кросс-платформенным решениям идея не новая. Многие давно использовали собственную реализацию, совмещая также с платформенными архитектурами.

    habr.com/ru/articles/802111/

    #kotlin_multiplatform #kotlin_multiplatform_mobile #viewModel #разработка_под_iOS #разработка_под_Android #kmp #google #jetpack

  29. For example: assume I have a classic MVVM app and I've created a #ViewModel. Does this graphic decision tree help me decide how/where to store this VM?

    End result - wrap the VM in @EnvironmentObject so I can retrieve it in many Views.

    I don't see this graphic decision tree helping with that decision.

  30. There is so much going on in this screen of my current #dotNETMAUI #MacCatalyst app already:
    - Loading #SfSymbols via my custom library
    - Coloring all icons with the #macOS/#iOS system colors via my custom library
    - Extending image control to load a placeholder from SfSymbol
    - Custom FramedContentControlWithText
    - Entry handler modification to remove the border on Mac

    Note: I did not yet wire up a #ViewModel instance.

    #dotNET #CASBAN6 #MAUI #MAUIDev #MVVM #XAML #programming #developer #devlife

  31. OMG, a #ViewModel in #React ?! - Modularizing React Applications with Established UI Patterns - Juntao Qiu - martinfowler.com/articles/modu - Interesting read!

  32. There is so much going on in this screen of my current #dotNETMAUI #MacCatalyst app already:
    - Loading #SfSymbols via my custom library
    - Coloring all icons with the #macOS/#iOS system colors via my custom library
    - Extending image control to load a placeholder from SfSymbol
    - Custom FramedContentControlWithText
    - Entry handler modification to remove the border on Mac

    Note: I did not yet wire up a #ViewModel instance.

    #dotNET #CASBAN6 #MAUI #MAUIDev #MVVM #XAML #programming #developer #devlife

  33. There is so much going on in this screen of my current #dotNETMAUI #MacCatalyst app already:
    - Loading #SfSymbols via my custom library
    - Coloring all icons with the #macOS/#iOS system colors via my custom library
    - Extending image control to load a placeholder from SfSymbol
    - Custom FramedContentControlWithText
    - Entry handler modification to remove the border on Mac

    Note: I did not yet wire up a #ViewModel instance.

    #dotNET #CASBAN6 #MAUI #MAUIDev #MVVM #XAML #programming #developer #devlife

  34. There is so much going on in this screen of my current #dotNETMAUI #MacCatalyst app already:
    - Loading #SfSymbols via my custom library
    - Coloring all icons with the #macOS/#iOS system colors via my custom library
    - Extending image control to load a placeholder from SfSymbol
    - Custom FramedContentControlWithText
    - Entry handler modification to remove the border on Mac

    Note: I did not yet wire up a #ViewModel instance.

    #dotNET #CASBAN6 #MAUI #MAUIDev #MVVM #XAML #programming #developer #devlife

  35. There is so much going on in this screen of my current #dotNETMAUI #MacCatalyst app already:
    - Loading #SfSymbols via my custom library
    - Coloring all icons with the #macOS/#iOS system colors via my custom library
    - Extending image control to load a placeholder from SfSymbol
    - Custom FramedContentControlWithText
    - Entry handler modification to remove the border on Mac

    Note: I did not yet wire up a #ViewModel instance.

    #dotNET #CASBAN6 #MAUI #MAUIDev #MVVM #XAML #programming #developer #devlife