android 为什么Jetpack Compose提供单独的按钮类型,如OutlinedButton,TextButton和Button?

jm81lzqq  于 2023-05-12  发布在  Android
关注(0)|答案(2)|浏览(109)

为什么Jetpack Compose提供单独的按钮类型,如OutlinedButtonTextButton,而不是将按钮样式作为参数传递给单个按钮类型?
我明白这将帮助我们更好地组织代码和维护,并且也使直接从名称更容易理解组件的目的,而不是一个带有一堆参数的通用名称!

这个问题不仅仅是关于按钮,而是关于为什么Jetpack Compose为不同的视觉风格提供多个可组合函数,而不是提供可以使用样式参数自定义的单个基本可组合函数的设计决策。

因为最后,如果我们看到这些组件的代码,你会看到它正在调用基本组件,只是参数不同:

@Composable
fun OutlinedButton(
    onClick: () -> Unit,
    modifier: Modifier = Modifier,
    enabled: Boolean = true,
    shape: Shape = ButtonDefaults.outlinedShape,
    colors: ButtonColors = ButtonDefaults.outlinedButtonColors(),
    elevation: ButtonElevation? = null,
    border: BorderStroke? = ButtonDefaults.outlinedButtonBorder,
    contentPadding: PaddingValues = ButtonDefaults.ContentPadding,
    interactionSource: MutableInteractionSource = remember { MutableInteractionSource() },
    content: @Composable RowScope.() -> Unit
) =
    Button(
        onClick = onClick,
        modifier = modifier,
        enabled = enabled,
        shape = shape,
        colors = colors,
        elevation = elevation,
        border = border,
        contentPadding = contentPadding,
        interactionSource = interactionSource,
        content = content
    )
bz4sfanl

bz4sfanl1#

Material设计组件不仅存在于Compose中,还存在于Views、Web、Flutter中,并作为一种设计原则。
正因为如此,它们不仅仅是样式,而且是组件,具有各自的指导方针,原理和目的,可以使用M2和M3创建设计样式。

https://m3.material.io/components/all-buttons

0lvr5msh

0lvr5msh2#

只是因为Jetpack Compose像其他前端技术一样实现了提供所有这些按钮的材料UI语言。

相关问题