小编Shr*_*h.K的帖子

带级联飞镖的三元运算符的奇怪行为

为什么两个结果打印出来是一样的?

final list1 = [ "a", "b", "c" ];
final result1 = true ? list1 : list1..removeWhere((e) => e == "a");
print(result1); // prints ["b", "c"]

final list2 = [ "a", "b", "c" ];
final result2 = false ? list2 : list2..removeWhere((e) => e == "a");
print(result2); // prints ["b", "c"]
Run Code Online (Sandbox Code Playgroud)

这种情况仅发生在三元条件下。当在正常的 if-else 中时,这工作得很好。

conditional-operator dart

5
推荐指数
1
解决办法
123
查看次数

Row() 中的最后一个可组合项被压缩 (Jetpack Compose)

我正在尝试创建一个自定义搜索栏;其中我使用Row()可组合项作为所有其他元素的容器。这里最后一个FloatingActionButton被挤压,但我希望它TextField是灵活的,以便它被缩短以容纳剩余的元素。

最后一个元素挤入 Row

我已经知道一些解决方法,但我想要一个更好的解决方案。请参阅下文了解已知的解决方法及其缺点。


@Preview(showBackground = true, widthDp = 410)
@Composable
fun MyComposable() {
    Row(Modifier.fillMaxWidth()) {
        TextField(value = "Search", onValueChange = {})
        FloatingActionButton(onClick = {}) {Icon(Icons.Filled.SkipNext, contentDescription = null)}
        FloatingActionButton(onClick = {}) {Icon(Icons.Filled.Close, contentDescription = null)}
        FloatingActionButton(onClick = {}) {Icon(Icons.Filled.Home, contentDescription = null)}
    }
}

Run Code Online (Sandbox Code Playgroud)

已知的解决方法:

  1. 使用ConstraintLayout(缺点:复杂。在很多情况下似乎有点矫枉过正。)
  2. 用于CompositionLocalProvider提供 RTL LocalLayoutDirection。(缺点:看起来很老套。子组件的所有布局都变成了 RTL。例如文本字段图标和文本放置。)
  3. 为最后一个元素指定固定宽度(或权重)。(缺点:这使得倒数第二个元素受到挤压,并迫使我对宽度进行硬编码,这在某些元素上无法完成,例如Button它的宽度是由其中的本地化文本确定的。)

android kotlin android-jetpack-compose

4
推荐指数
1
解决办法
1958
查看次数

下拉菜单剪辑/缩小项目 Jetpack Compose

我正在创建一个下拉菜单,其中的项目包含一个文本元素和一个图标(中间有一个分隔符);但只有第一个文本完整显示。仅当有其他项目占用更多空间时,该图标才可见。

@Preview(showSystemUi = true)
@Composable
fun MyScreen() {
    Box(Modifier.fillMaxSize(), Alignment.Center) {

        Box() {
            var expanded by remember { mutableStateOf(false) }

            IconButton(onClick = { expanded = !expanded }) {
                Icon(imageVector = Icons.Default.MoreVert, contentDescription = null)
            }

            DropdownMenu(expanded = expanded, onDismissRequest = { expanded = false }) {
                MyMenuItem("item 1")           // Icon visible
                MyMenuItem("item 2")           // Icon visible
                MyMenuItem("item 3 long text") // Icon width shrunk to 0
                MyMenuItem("item 4 long te")   // Icon visible but shrunk
            }

        }
    }
}

@Composable …
Run Code Online (Sandbox Code Playgroud)

android kotlin android-jetpack android-jetpack-compose

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

伴奏寻呼机“offscreenLimit”已删除。如何禁用附近页面的预加载?

自版本 v0.19.0 起;offscreenLimit参数已被删除。如何使用其他技术禁用预加载?

    @Composable
    fun MyComposable(){
        val pagerState = rememberPagerState()
        HorizontalPager(
            state = pagerState,
            modifier = Modifier.fillMaxSize(),
            count = itemList.size,
        ) { i ->

            MyPage(i)
        }
    }
Run Code Online (Sandbox Code Playgroud)

android android-jetpack-compose jetpack-compose-accompanist

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