小编can*_*eru的帖子

修饰符工厂函数不应标记为 @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
查看次数

如何为gradle设置代理服务器?

我需要设置一个代理服务器,以便能够使用我公司网络的gradle来下载项目依赖项.我尝试为shell设置代理,但它没有用,所以我认为是因为命令,gradle使用到下载这些依赖项,不使用http_proxy环境变量.

下载项目依赖项时wget,哪些命令(如?curl)会使用?我该如何检查这些命令?我尝试了--info和--debug选项,但它只对每个文件说了类似的东西;

Download https://jcenter.bintray.com/com/android/tools/lint/lint/25.1.0/lint-25.1.0.pom
Run Code Online (Sandbox Code Playgroud)

command-line android gradle build.gradle android-gradle-plugin

7
推荐指数
1
解决办法
3万
查看次数