我试图从我的房间数据库中获取球员名单。在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
这是一个很好的方法来转换流到列表?
1条答案
按热度按时间nr7wwzry1#
要简单地将Flow转换为其包含类型,可以使用
.first()
。注意,如果这个值在第一次读取后发生了变化,.first()不会接受这个值,因为它只是读取第一个值,然后停止观察流。当您使用Jetpack compose时,如果这是您在composable中使用的值,您可以通过
tournamentViewModel.playerList.collectAsState(initialValue = emptyList())
将流转换为状态注意:当收集流作为状态时,必须提供初始值。为了避免这种情况,您可以通过.stateIn(..)方法(see docs)将流转换为视图模型中的StateFlow。
要直接回答您的问题,这应该可以解决您的问题: