android - 如何在 jetpack compose Preview 中显示 Kotlin 协程流数据?

标签 android kotlin-coroutines android-jetpack-compose preview kotlin-flow

我将数据列表传递给可组合函数( data object of type Flow<List<Device>> )。我用的是流法collectAsState内部可组合使用此数据作为状态,构建应用程序后我可以在模拟器中看到列表。请注意,撰写预览面板不显示虚假数据 我传递给可组合的。

@Preview
@Composable
PreviewHomeScreen() {
  val devices = flow { emit(
    listOf(Device(1, "Device Name 1"), Device(2, "Device Name 2"))
  )}
  HomeScreen(devices)
}
预览窗口可以显示Flow类型的数据有什么工作吗?

最佳答案

我无法解释为什么它不起作用。这可能不是预览的目的。
您应该考虑关注点分离。管理流程可能不是您的 Composable 责任。
所以只需预览不管理流程的部分:

@Composable
HomeScreen() {
  val devicesFlow = flow { emit(
    listOf(Device(1, "Device Name 1"), Device(2, "Device Name 2"))
  )}

  val devicesState = devicesFlow.collectAsState(initial = emptyList())

  // HomeScreen recomposed each time flow emit a new list of devices
  HomeScreen(devicesState.value)
}

@Composable
HomeScreen(devices: List<Device>) {
  // Your code here
}

@Preview
@Composable
PreviewHomeScreen() {
  val devices = listOf(Device(1, "Device Name 1"), Device(2, "Device Name 2"))
  HomeScreen(devices)
}

关于android - 如何在 jetpack compose Preview 中显示 Kotlin 协程流数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68608212/

相关文章:

android - 如何从使用 .await() 调用的方法返回异常

android - 可组合性在无限循环中不断刷新

android - 这个 kotlin jetpack compose 代码示例中的 "provides"语法是什么?

android - 应用内结算 : "Query items available for purchase" returns 0 items

android - Phonegap/Cordova - 构建 Apk

kotlin - 等待循环中的所有流程完成

android - Jetpack Compose 添加 onClick 将重新组合

android - 为什么不能在android模拟器中激活相机?

android - 是否可以在使用 Hyper-V 托管的 guest 操作系统上使用 HAXM?

android - 为什么当协程试图进入 Dispatchers.Main 时应用程序终止?