для этого Flow<Int>, в который кладу позицию к которой надо скроллить
сделал val scrollToPosition = flow.collectAsState(initialState = -1)
сделал LaunchedEffect(positionToScroll.value) { %тут скролю список% }
смущает два момента:
1) initialState = -1, из-за него в LaunchedEffect сначала приходится проверять что значение != -1
2) ключ для LaunchedEffect – из-за него при эмите двух одинаковых значений подряд второй скролл не происходит
как это правильно реализовать?
для второго на ум приходит только костыли в виде использования Flow<Pair<Int, Long>> вместо Flow<Int>, где Long это System.currentTimeInMillis(), и использование Long в качестве ключа для LaunchedEffect, как-то по-красивее это можно сделать?
sharedFlow ?
это предложение или вопрос? вообще stateFlow используется сейчас
Collect flow внутри эффекта
event.collectInCompose { event -> when (event) { is Event.Scroll -> scrollState.scrollTo(event.position) } }
Обсуждают сегодня