我有一个分页器,每一页上都有一个文本框。我正在使用animateScrollToPage()
进行转换。如何使每个页面上的文本框获得焦点?
当我将Modifier.focusRequster()
赋给文本框并检查index = pagerState.currentIndex
时,在转换动画结束之前,文本框已经获得了焦点。
@Composable
fun PagerScreen(
) {
val pagerState = rememberPagerState()
val pageList = listOf<@Composable () -> Unit>(
{ Page1(pagerState) },
{ Page2(pagerState) },
{ Page3(pagerState) }
)
HorizontalPager(
state = pagerState,
userScrollEnabled = false,
count = pageList.size
) { index ->
pageList[index]()
}
}
@Composable
fun Page1(pagerState: PagerState) {
val scope = rememberCoroutineScope()
val nextPage = pagerState.currentPage + 1
var text by remember { mutableStateOf(TextFieldValue("")) }
Column {
TextField(
value = text,
onValueChange = { value -> text = value }
)
Button(
onClick = {
scope.launch { pagerState.animateScrollToPage(nextPage) }
}
) {
Text(text = "Next")
}
}
}
// other pages same as Page1