18 android kotlin android-jetpack-compose
我是 jetpack compose 的新手,我尝试构建小项目来学习 jetpack compose,我有示例代码,并且
composableScope.launch
Run Code Online (Sandbox Code Playgroud)
它会抛出错误,因为调用启动应该发生在 LaunchedEffect 内部,而不是 for 的组合launch,有什么想法吗?
val composableScope = rememberCoroutineScope()
val currentPage = onBoardViewModel.currentPage.collectAsState()
Scaffold(
modifier = Modifier.fillMaxSize(),
scaffoldState = scaffoldState
) {
Surface(
modifier = Modifier.fillMaxSize()
) {
composableScope.launch {
pagerState.animateScrollToPage(
page = currentPage.value
)
}
}
}
Run Code Online (Sandbox Code Playgroud)
ngl*_*ber 19
您不能直接在“组合”(可组合函数中声明 UI 的位置)中调用协程,因为 Compose 框架可以随时多次调用该函数。
相反,LaunchedEffect如果您想在组合期间调用协程,则应该使用(在此处阅读更多内容)。或者,如果您在事件(例如单击)中需要协程,您应该使用rememberCoroutineScope.
LaunchedEffect(someKey) { // the key define when the block is relaunched
// Your coroutine code here
}
Run Code Online (Sandbox Code Playgroud)
或者
Modifier.clickable {
coroutineScope {
// your coroutine here
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8430 次 |
| 最近记录: |