使用 Jetpack Compose 显示房间中的物品

问题描述 投票:0回答:1

我正在尝试使用 JetPack Compose 显示我的房间数据库中的项目,如此示例所示。

我的实体:

@Entity(tableName = "trains")
data class TrainSearch(
    @PrimaryKey(autoGenerate = true)
    override var id: Long = 0L,
    var type: TrainType = TrainType.ICE,
    var number: String = "",
    override var name: String? = null
) : Listable {}

我的存储库:

class ListableRepositoryImpl(private val trainSearchDao: TrainSearchDao) : ListableRepository {
    override fun fetchAllItems(): Flow<TrainSearch> {
        return trainSearchDao.getAllTrainSearches()
    }
}

我的视图模型:

class FavListViewModel(private val homeRepo: ListableRepository) : ViewModel() {

    val savedItems = homeRepo.fetchAllItems()
}

我的撰写功能:

(...)
import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.getValue
(...)

fun FavListScreen(
    modifier: Modifier = Modifier,
    favListViewModel: FavListViewModel = koinViewModel()
) {

    val savedItems:List<TrainSearch> by favListViewModel.savedItems.collectAsState(initial = emptyList<TrainSearch>())
(...)

但是我收到错误消息,

getValue
不合适。我不知道为什么。 :(

有人能指出我正确的方向吗?

android-jetpack-compose android-room kotlin-coroutines android-viewmodel
1个回答
0
投票

错误不是来自 Room,而是因为您使用

by
关键字而不是
=
而显示。

要解决此问题,请添加这些导入:

import androidx.compose.runtime.State
import androidx.compose.runtime.getValue

注意:如果出于任何原因您使用

var
而不是
val
那么您必须添加另一个导入:
androidx.compose.runtime.setValue

© www.soinside.com 2019 - 2024. All rights reserved.