Ank*_*hah 6 android kotlin android-jetpack kotlin-coroutines android-jetpack-compose
我正在 jetpack compose 中编写一些寻呼机代码,并遇到需要通过单击按钮更改页码的情况。这是我单击按钮时的事件:
onClick = {pagerState.scrollToPage(page=currentPager+1)}
Run Code Online (Sandbox Code Playgroud)
但当我这样做时,我收到此错误:Suspend function 'scrollToPage' should be called only from a coroutine or another suspend function
我通过添加以下内容找到了解决方案:
onClick = {GlobalScope.launch (Dispatchers.Main) {pagerState.scrollToPage(page=currentPager+1)}}
Run Code Online (Sandbox Code Playgroud)
但仍然不建议使用 GlobalScope.launch 。上面的 onClick 在基本 compose 函数中调用。如何解决 jetpack compose 中的此问题?
Dee*_*Shu 12
浏览此文档:伴奏寻呼机
这是原始代码:滚动到页面的原始代码
如果要跳转到特定页面,可以在 CoroutineScope 中调用 pagerState.scrollToPage(index) 或 pagerState.animateScrollToPage(index) 方法:
val pagerState = rememberPagerState()
val scope = rememberCoroutineScope()
HorizontalPager(count = 10, state = pagerState) { page ->
// ...page content
}
// Later, scroll to page 2
scope.launch {
pagerState.scrollToPage(2)
}
Run Code Online (Sandbox Code Playgroud)
您应该使用下面的代码在可组合项中创建协程作用域。
val coroutinesScope = rememberCoroutineScope()
Run Code Online (Sandbox Code Playgroud)
请注意,您只能在可组合项内部调用它,因此您无法在可组合coroutinesScope
项内部创建onClick()
,并且必须在可组合项顶部对其进行初始化。
归档时间: |
|
查看次数: |
1296 次 |
最近记录: |