java.lang.IllegalStateException:在 Jetpack compose 中滚动分页 Lazy 列时,LayoutNode 应附加到所有者

nay*_*rde 11 android android-jetpack-compose

我使用 LazyColumn 和 Paging 3 来加载联系人,当我滚动列表时,它很慢,有时会抛出以下异常

java.lang.IllegalStateException: LayoutNode should be attached to an owner
        at androidx.compose.ui.node.LayoutNodeKt.requireOwner(LayoutNode.kt:1407)
        at androidx.compose.ui.node.ModifierLocalConsumerNode.notifyConsumerOfChanges(ModifierLocalConsumerNode.kt:42)
Run Code Online (Sandbox Code Playgroud)

以下是 LazyColumn 的代码:

val contactsFlow= viewModel.fetchContacts(context)
val lazyContacts = contactsFlow.collectAsLazyPagingItems()
    LazyColumn(
        modifier = Modifier.padding(top = 8.dp),
        verticalArrangement = Arrangement.spacedBy(8.dp)) {
        items(lazyContacts) { contact ->
            if(contact != null)
            {
                Contact(contact = contact, onContactClick = {
                    viewModel.addMemberFrom(it) { member ->
                        onContactClick(member)
                    }
                })
            }
        }
    }

Run Code Online (Sandbox Code Playgroud)

这是视图模型代码:

java.lang.IllegalStateException: LayoutNode should be attached to an owner
        at androidx.compose.ui.node.LayoutNodeKt.requireOwner(LayoutNode.kt:1407)
        at androidx.compose.ui.node.ModifierLocalConsumerNode.notifyConsumerOfChanges(ModifierLocalConsumerNode.kt:42)
Run Code Online (Sandbox Code Playgroud)

小智 1

当您在 LazyColumn 中使用项目列表时,您无法通过 null 检查跳过项目。尝试在您的“联系人”中显示一些内容。它可以是“正在加载”或默认值。