kotlin Convert Flow< List< >> to List< > From Room database

oalqel3c  于 2023-05-07  发布在  Kotlin
关注(0)|答案(1)|浏览(175)

我试图从我的房间数据库中获取球员名单。在Flow中得到它,我将其转换为List,我想在列表上循环,以检查哪个玩家应该获得赢/输/平局。
我想是我的播放列表出了问题,因为我甚至不能在日志中显示它

val playerList = playerStatsRepository.getAllPlayerStats(tournament.id)
            .flatMapConcat { it.asFlow() }.toList()

我的tournamentViewModelhttps://github.com/DawidSiudeja/Tournament/blob/master/app/src/main/java/com/example/tournamentapp/TournamentViewModel.kt

这是一个很好的方法来转换流到列表?

nr7wwzry

nr7wwzry1#

要简单地将Flow转换为其包含类型,可以使用.first()。注意,如果这个值在第一次读取后发生了变化,.first()不会接受这个值,因为它只是读取第一个值,然后停止观察流。
当您使用Jetpack compose时,如果这是您在composable中使用的值,您可以通过tournamentViewModel.playerList.collectAsState(initialValue = emptyList())将流转换为状态
注意:当收集流作为状态时,必须提供初始值。为了避免这种情况,您可以通过.stateIn(..)方法(see docs)将流转换为视图模型中的StateFlow。
要直接回答您的问题,这应该可以解决您的问题:

val playerList = playerStatsRepository.getAllPlayerStats(tournament.id).first()

相关问题