【问题标题】:How can I use LaunchEffect in the AndroidView in the Jetpack Compose?如何在 Jetpack Compose 的 AndroidView 中使用 LaunchEffect?
【发布时间】:2021-11-17 09:46:44
【问题描述】:

我想使用 AndroidView 的 LaunchEffect 从 ViewModel Stateflow 收集数据,但我收到错误消息。我该如何解决?

【问题讨论】:

  • AndroidView 的工厂参数不是可组合的。它用于返回基于视图的对象。您不能在 AndroidView 中使用 LaunchedEffect。您只能在可组合内使用它。

标签: android android-jetpack-compose


【解决方案1】:

您只能在 @Composable 函数内运行 LaunchedEffect,这意味着您的lamba 应该用@Composable () -> Unit 注释以便兼容。但我不太确定这是一个好习惯。

【讨论】:

    【解决方案2】:

    您正在尝试使用不在可组合范围内的可组合 LaunchedEffect。 将启动的效果移到 getMapAsync 之外。

    你可以做类似的事情。

    @Composable
    fun MapViewContainer {
       ...
    
       var mapIsReady by remember { mutableStateOf(false) }
    
       ...
    
        mapView.getMapAsync {
           mapIsReady = true
           ...
        }
    
        ...
    
        if (mapIsReady) {
           // do some compose things
        }
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多