KOTLIN_ADEPT Telegram 107
Представьте, что у вас есть список карточек, и на каждой из них отображается информация, которая обновляется в реальном времени.

Как правило, логикой обновления карточек занимается ViewModel экрана, однако это не всегда удобно. Что, если у каждой карточки будет собственный компонент логики, который будет подписываться на данные и самостоятельно изменять своё состояние?

Проблема здесь в том, что необходимо отменять подписку и освобождать ресурсы, если карточка больше не видна на экране.

🌳 Решить эту задачу можно с помощью библиотеки Decompose. Однако стандартные методы навигации из коробки не подходят. Наиболее близкий по смыслу — это ChildPages, который преимущественно используется в связке с ViewPager. Тем не менее, он отличается от ленивого списка.

Поэтому можно создать собственный тип навигации для использования с LazyList, который корректно управляет жизненным циклом компонентов:
🔵Видимые компоненты будут находиться в состоянии Resumed.
🔸Компоненты, ближайшие к видимым, — в состоянии Started.
🔸Остальные — в состоянии Created или Destroyed.

Таким образом, получилось декомпозировать логику и избавиться от бойлерплейта, связанного с отменой подписок.

Пример и реализацию кастомного механизма навигации можно посмотреть здесь 🐱
За решение спасибо моему коллеге Евгению Мельцайкину 👏
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥36👍6



tgoop.com/kotlin_adept/107
Create:
Last Update:

Представьте, что у вас есть список карточек, и на каждой из них отображается информация, которая обновляется в реальном времени.

Как правило, логикой обновления карточек занимается ViewModel экрана, однако это не всегда удобно. Что, если у каждой карточки будет собственный компонент логики, который будет подписываться на данные и самостоятельно изменять своё состояние?

Проблема здесь в том, что необходимо отменять подписку и освобождать ресурсы, если карточка больше не видна на экране.

🌳 Решить эту задачу можно с помощью библиотеки Decompose. Однако стандартные методы навигации из коробки не подходят. Наиболее близкий по смыслу — это ChildPages, который преимущественно используется в связке с ViewPager. Тем не менее, он отличается от ленивого списка.

Поэтому можно создать собственный тип навигации для использования с LazyList, который корректно управляет жизненным циклом компонентов:
🔵Видимые компоненты будут находиться в состоянии Resumed.
🔸Компоненты, ближайшие к видимым, — в состоянии Started.
🔸Остальные — в состоянии Created или Destroyed.

Таким образом, получилось декомпозировать логику и избавиться от бойлерплейта, связанного с отменой подписок.

Пример и реализацию кастомного механизма навигации можно посмотреть здесь 🐱
За решение спасибо моему коллеге Евгению Мельцайкину 👏

BY Kotlin Adept Notes




Share with your friend now:
tgoop.com/kotlin_adept/107

View MORE
Open in Telegram


Telegram News

Date: |

Find your optimal posting schedule and stick to it. The peak posting times include 8 am, 6 pm, and 8 pm on social media. Try to publish serious stuff in the morning and leave less demanding content later in the day. “Hey degen, are you stressed? Just let it all out,” he wrote, along with a link to join the group. While the character limit is 255, try to fit into 200 characters. This way, users will be able to take in your text fast and efficiently. Reveal the essence of your channel and provide contact information. For example, you can add a bot name, link to your pricing plans, etc. On June 7, Perekopsky met with Brazilian President Jair Bolsonaro, an avid user of the platform. According to the firm's VP, the main subject of the meeting was "freedom of expression." Commenting about the court's concerns about the spread of false information related to the elections, Minister Fachin noted Brazil is "facing circumstances that could put Brazil's democracy at risk." During the meeting, the information technology secretary at the TSE, Julio Valente, put forward a list of requests the court believes will disinformation.
from us


Telegram Kotlin Adept Notes
FROM American