我正在尝试从我的房间数据库中获取玩家列表。在 Flow 中获取它,然后我将其转换为列表
我想遍历列表以检查哪个玩家应该赢/输/平。
我认为我的播放器列表有问题,因为我什至无法在 Log.d 中显示它
val playerList = playerStatsRepository.getAllPlayerStats(tournament.id)
.flatMapConcat { it.asFlow() }.toList()
我的锦标赛ViewModel https://github.com/DawidSiudeja/Tournament/blob/master/app/src/main/java/com/example/tournamentapp/TournamentViewModel.kt
Flow转List的好方法?
.first()
。请注意,如果此值在第一次读取后稍后发生变化,.first() 将不会接受它,因为它只是读取第一个值,然后停止观察流程。
当您使用 Jetpack compose 时,如果这是您在可组合项中使用的值,您可以通过
tournamentViewModel.playerList.collectAsState(initialValue = emptyList())
将流转换为状态
注意:将 Flow 收集为状态时,您必须提供初始值。为避免这种情况,您可以通过 .stateIn(..) 方法(see docs)
将您的流程转换为视图模型中的 StateFlow要直接回答您的问题,这应该可以解决您的问题:
val playerList = playerStatsRepository.getAllPlayerStats(tournament.id).first()