Попал в бесконечную рекомпозицию из-за состояния пейджера горизонтального пейджераAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Попал в бесконечную рекомпозицию из-за состояния пейджера горизонтального пейджера

Сообщение Anonymous »

этот фрагмент кода выполняет бесконечную рекомпозицию при прокрутке , не могу понять почему?
Как управлять состоянием и анимацией в HorizontalPager в Jetpack Compose?
Я работаю с Jetpack Compose и пытаюсь создать собственный диалоговый пользовательский интерфейс, включающий HorizontalPager. Я использую ComposeView внутри MainActivity для отображения этого пользовательского интерфейса, но у меня возникают проблемы с управлением состоянием, анимацией и начальной настройкой страницы.
class MainActivity : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val compose = findViewById(R.id.composeErrorScreen)
compose.apply {
visibility = VISIBLE
setContent {
val dialogContentState by remember {
mutableStateOf(
CardsScreenUi(
2, // initialCard
listOf(2, 3, 4) // cardsList
)
)
}
Box(
modifier = Modifier
.fillMaxSize()
.background(Color.Transparent),
contentAlignment = Alignment.BottomEnd
) {
DialogContent(dialogContentState)
}
}
}
}
}

Здесь я добавляю компоновку с помощью JetPack Compose
internal data class CardsScreenUi(
val initialCard: Int,
val cardsList: List
)

@Composable
internal fun BoxScope.DialogContent(
dialogContentState: CardsScreenUi?,
) {

Log.d("[Testing]", "Starting ")

Column(
modifier = Modifier.align(Alignment.Center),
horizontalAlignment = Alignment.CenterHorizontally
) {
dialogContentState?.let { data ->
val (initialCard, cardsList) = data
val pagerState = rememberPagerState(
pageCount = {
cardsList.size
}
)

val screenWidth = LocalConfiguration.current.screenWidthDp.dp
val pageWidth = remember { 300.dp }
val sidePadding = remember { (screenWidth - pageWidth) / 2 }

HorizontalPager(
state = pagerState,
pageSpacing = 12.dp,
pageSize = PageSize.Fixed(pageWidth),
contentPadding = PaddingValues(horizontal = sidePadding)
) { page ->
// Page content can go here (e.g., display card content)
}

Spacer(modifier = Modifier.height(22.dp))

DotStepper(count = pagerState.pageCount, count2 = pagerState.currentPage)
}
}
}

@Composable
fun DotStepper(count: Int, count2: Int) {
Log.d("[Testing]", "Horizontal Pager $count and ${count2}")
}


Подробнее здесь: https://stackoverflow.com/questions/791 ... ager-state
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»