我正在尝试使用 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
不合适。我不知道为什么。 :(
有人能指出我正确的方向吗?
错误不是来自 Room,而是因为您使用
by
关键字而不是 =
而显示。
要解决此问题,请添加这些导入:
import androidx.compose.runtime.State
import androidx.compose.runtime.getValue
注意:如果出于任何原因您使用
var
而不是 val
那么您必须添加另一个导入:androidx.compose.runtime.setValue