gpt4 book ai didi

android - 为什么它说 "Calls to launch should happen inside a LaunchedEffect and not composition"?

转载 作者:行者123 更新时间:2023-12-05 04:31:45 34 4
gpt4 key购买 nike

我是 jetpack compose 的新手,我尝试构建一个小项目来学习 jetpack compose,我有示例代码,并且为了

composableScope.launch 

它抛出一个错误,因为启动调用应该发生在 LaunchedEffect 内部,而不是 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
)
}
}
}

最佳答案

您不能在“组合”(您声明 UI 的 Composable 函数中的位置)中直接调用协程,因为 Compose 框架可以随时多次调用此函数。

相反,如果您想在组合过程中调用协程,则应使用 LaunchedEffect(阅读更多 here )。或者,如果您需要在某个事件(如点击)中使用协程,您应该使用 rememberCoroutineScope

LaunchedEffect(someKey) { // the key define when the block is relaunched
// Your coroutine code here
}

Modifier.clickable {
coroutineScope {
// your coroutine here
}
}

关于android - 为什么它说 "Calls to launch should happen inside a LaunchedEffect and not composition"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71798826/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com