Android Compose UI组件继承

组件继承其实就是,你之前写了一个组件A,后来想在A组件的基础上拓展一些功能,但又不想把A复制一份,所以继承了A并提供更多功能。

举例

比如在项目里写了左边这个组件

image-20221027095517269

但是后来在别的地方又有类似的布局,这里就可以用继承

image-20221027095618565

实现方法

利用kotlin中函数可以作为参数传递的特性,将子组件传递进父组件,再在父组件中调用即可

下面给了父组件的参数,compoent参数就是接收函数,这里赋值初值为null表示在父组件使用时可以不传递此参数(就是更简洁一些)

@Composable
fun ProfileCard(
   profile: ProfileEntity,
   component: @Composable (() -> Unit)? = null,
)

然后在你想放置子组件的地方使用

component?.invoke()

这样子组件就会在父组件的列或者行中调用了

语法糖

注意kotlin有一个语法糖:当函数作为参数调用时,函数可以放在括号外面的大括号内,也就是你可以这样调用父函数:

ProfileCard(profile = profile) {
   Text(
       modifier = Modifier.padding(top = 25.dp),
       text = stringResource(R.string.测试成绩),
       color = TrolleyColors.TextColor,
       style = TrolleyStyles.BodyLarge,
  )
}

简单的小技巧get

发表评论