Описание тега kotlin-stateflow

В сопрограммах Kotlin StateFlow — это изменяемое значение, изменения которого можно наблюдать как поток. Используйте этот тег для вопросов о публикации, преобразовании и использовании потоков состояний.
2 ответа

Использование карты в Stateflow Котлина

С LiveData внутри Viewmodel мы используем switchMap или Transformations.map, как это val recipesList = cuisineType.switchMap { repository.getDisplayRecipes(it.cuisineType).asLiveData() } Как лучше всего сделать это с помощью StateFlow? Я знаю, что м…
2 ответа

StateFlow не испускает, когда новое значение совпадает с последним значением

У меня есть форма входа. Я использую для отправки LoginResult (после вызова API) из ViewModel к Activity. В Activity я покажу диалоговое окно с ошибкой, если логин не удался. Он работает хорошо в первый раз, но после второго раза неудачного входа в …
06 янв '21 в 11:26
2 ответа

Преобразование LiveData в StateFlow / SharedFlow

Каков эквивалентный код для этого преобразования данных в реальном времени в StateFlow / SharedFlow? val myLiveData: LiveData<MyLiveData> = Transformations .switchMap(_query) { if (it == null) { AbsentLiveData.create() } else { repository.load…
1 ответ

StateFlow собирает в одной сопрограмме

Я пробовал запускать три сборки в одной сопрограмме, но работал только сначала. Только когда я устанавливаю сбор в разных сопрограммах, его работа. Почему? lifecycleScope.launch { launch { homeViewModel.dateStateFlow().collect { date -> date?.let…
1 ответ

Не удается найти сеттер, который принимает тип параметра «kotlinx.coroutines.flow.MutableStateFlow» DataBinding Android

Я использую привязку данных для обработки MutableStateFlow в моей ViewModel private val _searchSkeleton = MutableStateFlow(View.GONE) val searchSkeletonVis = _searchSkeleton Вот мое использование в файле XML app:viewVisibility="@{viewModel.searchSke…
1 ответ

Как я могу обрабатывать двустороннюю привязку в архитектуре MVI?

Я вижу много статей, посвященных двусторонней привязке с помощью MVVM. Но я хочу решить эту проблему, используя единый источник правды. Я не хочу создавать несколько потоков состояний для этого случая. У меня есть StateFlow, у которого есть все сост…
0 ответов

Kotlin StateFlow не собирается после начального значения

В моих моделях просмотра я раскрываю 2 потока состояний следующим образом val viewState: StateFlow<List<ItemRow>> = getFirstFlow().combine(getSecondFlow()) { data1: Set<Int>, data2: String -> buildResult(data1,data2) }.stateIn(v…
1 ответ

При разбивке на страницы с комнатой не удается правильно объединить поток <PagingData <Model>> с другими потоками

Я пытаюсь использовать библиотеку, чтобы получить от Room, затем проверьте, был ли выбран элемент в recyclerview, поэтому я сопоставляю этот класс с другим классом с именем. Для достижения этого сопоставления всякий раз, когда пользователь отмечал э…
1 ответ

Какой Kotlin Flow можно использовать здесь при создании приложения с помощью Compose?

Ниже приводится класс деятельности. class MainActivity : ComponentActivity() { private val viewModel: MainViewModel by viewModels { MainViewModelProvider() } override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) set…
1 ответ

Вызов нескольких методов модели просмотра из launchWhenStarted не работает [дубликат]

Этот код вызывает два метода для одной и той же модели просмотра и прослушивает обновления. Но завершается только первый метод, второй не запускает событие. private fun initData() { lifecycleScope.launchWhenStarted { viewModel.incrementCount().colle…
06 июн '21 в 19:55
1 ответ

Несколько LiveData/StateFlow для одной пары Fragment-ViewModel

У меня есть фрагмент, который представляет экран в приложении с одним действием, и ViewModel для этого фрагмента. ViewModel использует несколько репозиториев для загрузки набора данных из нескольких вызовов API и передает эти данные фрагменту через …
2 ответа

Приостановка, пока StateFlow не достигнет одного из желаемых состояний, и возврат результата

Рассмотрим состояние закрытого класса. sealed class State { object Unknown : State() object Loading : State() object Success : State() data class Failure(val exception: Exception) } У меня есть поток состояний, в котором потребители могут активно сл…
0 ответов

MutableStateFlow не удалось собрать значения, передаваемые в потоке

Я пытаюсь собрать события из flow. ViewModel val events = MutableStateFlow<HomeEvent>(HomeEvent.Empty) val uiEvents: StateFlow<HomeEvent> = events private suspend fun emitEvent(homeEvent: HomeEvent) { events.emit(homeEvent) } private fun…
1 ответ

В области жизненного цикла с двумя наблюдателями StateFlow работает только первый.

Мне кажется, я чего-то не совсем понимаю. Не могли бы вы объяснить мне, почему, когда я использую этот пример, у меня работает только первый сбор. lifecycleScope.launch { viewModel.test1.flowWithLifecycle(lifecycle, Lifecycle.State.STARTED).collect …
5 ответов

Последнее значение StateFlow снова собирается в пользовательском интерфейсе

Итак, в последнее время я работал с API StateFlow, SharedFlow и Channels, но я борюсь с одним распространенным вариантом использования, пытаясь перенести свой код из LiveData в StateFlow на уровне представления. Проблема, с которой я сталкиваюсь, за…
0 ответов

Как изменить источник данных kotlin StateFlow

Я переношу этот образец кода на StateFlow. class RosterMotor(private val repo: ToDoRepository) : ViewModel() { private val _states = MediatorLiveData<RosterViewState>() val states: LiveData<RosterViewState> = _states private var lastSour…
10 июл '21 в 17:37
1 ответ

LiveData горячая или холодная?

Мы знаем, что StateFlow и SharedFlow популярны. StateFlow - это горячий поток - он остается в памяти до тех пор, пока поток собирается или пока существуют любые другие ссылки на него из корня сборки мусора. SharedFlow - это горячий поток, который пе…
0 ответов

Как обрабатывать множество запросов api и наблюдать за ними в kotlin Coroutines

Я хочу вызвать запрос к API в цикле и наблюдать результат для каждого запроса api. Проблема в том, что я думаю, что теряется какой-то результат. Как мне с этим справиться? Я хочу справиться с этим с помощью потока или потока состояний. Лучше дождать…
1 ответ

Проблема с состоянием в реактивном ранцеCompose и Flow

У меня сейчас проблема с JetpackCompose. Проблема в том, что когда я собираю данные из потока, значение извлекается из firebase, как будто есть слушатель, и данные меняются каждый раз. Но это не то. Я не знаю, в чем настоящая проблема! FirebaseSrcNa…
1 ответ

Двусторонняя привязка данных Android с использованием MutableStateFlow и наблюдение за изменениями в ViewModel

Только что узнал, пытаясь заменить MutableLiveData. Также Android не рекомендует соблюдать LiveData внутри ViewModel (если вы не используете observeForever(observer) но вам нужно не забыть удалить его, так что это хлопотно). data class Student(var i…