Прослушивание SwipeableState.progress.fraction отстает от приложения

Немного предыдущего контекста полезно, чтобы понять цель и найти лучшее решение или найти здесь ошибку.

В основном у меня есть LazyColumn с вложенной прокруткой и swipeableState.

  • Вложенная прокрутка прослушивает дельта-значения и использует дельта-значение, чтобы сделать чтобы отслеживать количество прокрутки, а затем возвращать Offset.Zero, позволяя LazyColumn прокручивать, как будто ничего не было.

  • SwipeableState помогает мне определить, какой процент прокрутки пользователя составляет от 0 до X. Например: высота привязки от 0 до 300.dp. Пользователь прокрутил на 150.dp. так что в основном я получаю, какой возврат 0.5000000f

То, что я делаю, это изменение альфа-значений/отступов и т. д. в процентах (в зависимости от состояния)

Хорошо, это был контекст, теперь ПРОБЛЕМА.

Всякий раз, когда я слушаю, похоже, что все приложение тормозит. Чтобы упростить получение этого примера, я не буду изменять альфу/заполнение по мере увеличения дроби , поэтому ничего не будет перекомпоновано. ( Они все пропущены, по крайней мере, так мне сказал Android Studio IDE Dolphin )

Просто слушая оно отстает от приложения. (В выпуске). Как только он достигает 1.0, он перестает отставать. Должно быть что-то не так, может быть, что-то перекомпоновывается, а я этого не видел.

Вот код:

      val swipeableFraction by remember {
    derivedStateOf {
        val formattedFraction = String.format("%.2f", swipeableState.progress.fraction).toFloat() // format to have 2 numbers like 0.82 instead of 0.823258142823
        formattedFraction
    }
}
val formattedValueToUse by remember(swipeableFraction) {
    mutableStateOf(swipeableFraction)
}

Есть ли лучшее решение или улучшение? или мне не хватает какого-то принципа составления? Я пытался понять, что происходит, и пытался найти некоторые решения/отладку.

Я очень ценю любой ответ или помощь.

Благодарю вас!

0 ответов

Другие вопросы по тегам