[英]replace GlobalScope.launch in jetpack compose
我正在使用 jetpack compose 编写一些寻呼机代码,但遇到了需要通过单击按钮更改页码的情况。 这是我的按钮点击事件:
onClick = {pagerState.scrollToPage(page=currentPager+1)}
但是当我这样做时,我得到这个错误: Suspend function 'scrollToPage' should be called only from a coroutine or another suspend function
我通过添加以下内容得到了解决方案:
onClick = {GlobalScope.launch (Dispatchers.Main) {pagerState.scrollToPage(page=currentPager+1)}}
但仍然不推荐 GlobalScope.launch。 上面的 onClick 在基本的 compose 函数中被调用。 如何在 jetpack compose 中解决此问题?
你应该使用下面的代码在你的可组合中创建一个协程范围。
val coroutinesScope = rememberCoroutineScope()
请注意,您只能在可组合中调用它,因此您不能在onClick()
创建coroutinesScope
并且必须在可组合的顶部对其进行初始化。
阅读此文档:伴奏寻呼机
这是一个原始代码: Raw code for scroll to page
如果要跳转到特定页面,可以在 CoroutineScope 中调用 call 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)
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.