相关疑难解决方法(0)

修饰符工厂函数不应标记为 @Composable

我为 Modifier 创建了一个扩展函数,单击时将向用户显示 BalloonPopup。我为此函数使用 @Composable 标签,因为我将在气球内显示的内容也是 @Composable。然而编译器给了我以下警告;

修饰工厂函数不应标记为@Composable,而应使用组合

我还应用了建议的更改,但是当用户单击视图时,气球根本没有显示。

我的问题是;

  1. 为什么修饰符工厂函数不应标记为 @Composable
  2. 对于这样的扩展函数使用 @Composable 和组合 { ... } 有什么区别。因为目前我还没有看到使用 @Composable 标签有任何缺点
  3. 为什么不显示气球,即使代码在调试代码时通过了 if (showTooltip) 条件。

以下是我在应用建议之前和之后使用的函数的代码;

前:

@Composable
fun Modifier.setPopup(enabled: Boolean = false, content: @Composable BoxScope.() -> Unit): Modifier {
    if (enabled) {
        var anchorOffset by remember { mutableStateOf<LayoutCoordinates?>(null) }
        var showTooltip by remember { mutableStateOf(false) }
        if (showTooltip) {
            BalloonPopup(
                onDismissRequest = {
                    showTooltip = false
                },
                content = content,
                anchorCoordinates = anchorOffset
            )
        } …
Run Code Online (Sandbox Code Playgroud)

android kotlin android-jetpack-compose

8
推荐指数
1
解决办法
2412
查看次数

标签 统计

android ×1

android-jetpack-compose ×1

kotlin ×1