使用mutableStateOf时RoleState.copy()报Unresolved reference错误
解决Kotlin中
copy方法“Unresolved reference”错误的问题 你的猜测完全正确——普通类不会自动生成copy方法,只有被声明为data class的数据类,Kotlin编译器才会自动生成copy、equals、hashCode、toString这些工具方法。你当前的RoleState是普通类,所以没有copy方法,自然会报找不到引用的错误。
解决步骤
把RoleState改成数据类即可:
data class RoleState( var roles: List<String> = emptyList(), var selectedRoles: List<String> = emptyList() )
修改后,编译器会自动为RoleState生成copy方法,你就能正常调用了。
额外逻辑修正
你代码里的null分支处理有问题:result.data ?: kotlin.run{... return@launch}会导致当result.data为null时,直接结束整个launch协程块,copy赋值操作根本不会执行。正确的写法应该在null分支返回一个合法的List<String>值(比如空列表),再触发Snackbar事件:
rolesState = rolesState.copy( selectedRoles = result.data ?: run { _eventFlow.emit(UiEvent.ShowSnackbar(UiText.errorUnknown())) emptyList() } )
或者拆分逻辑,让代码更清晰:
val newSelectedRoles = result.data ?: run { _eventFlow.emit(UiEvent.ShowSnackbar(UiText.errorUnknown())) emptyList() } rolesState = rolesState.copy(selectedRoles = newSelectedRoles)
内容的提问来源于stack exchange,提问作者CryptoCode
相关产品推荐
相关产品推荐

