写作时,使用modificadores-修饰符自定义或添加行为是自然的。
由于使用修饰符是直观的,因此在不考虑某些好的实践中写信给自己很常见,这些实践在应用程序上有很大差异,以简化代码甚至在性能问题中。
。考虑到这些详细信息,在本文中,我将向您展示可以用修饰符的JetPack Compiss优化代码和性能的吨,我们走吧吗?
修饰符padrãepo
第一个好练习更多的是惯例!著名的标准修饰符:
Column(Modifier.fillMaxSize()) {
Button(
onClick = { /*TODO*/ },
Modifier.fillMaxWidth()
) {
Text(
text = "button text test",
Modifier
.padding(8.dp)
.background(
Color.Gray.copy(alpha = 0.5f),
RoundedCornerShape(20.dp)
)
)
}
}
我不知道您是否已经注意到了它,但是JetPack Compiss的Lib或其他LIB(例如设计材料的Lib)都可以使用的每一个可用的综合,具有标准修饰符为第一个可选的Parano 。
这种实用的原因是允许在视觉修改,事件等中对任何修饰符的任何组合物进行个性化化。换句话说,当我们创建一个由我们的组成时,非常建议您有一个模式修饰符来弯曲个性化!
添加标准修饰符
修饰符添加标准仅要求它是带有值Modifier
的第一个可选parano,并且它修改了第一个组合:
@Composable
fun MyButton(
text: String,
modifier: Modifier = Modifier
) {
Box(
modifier
.padding(8.dp)
) {
Text(
text = text,
Modifier
.align(Alignment.Center)
)
}
}
使用这种方法,我们可以使用不同的公园的相同按钮:
Column {
MyButton("meu primeiro botão")
MyButton(
"meu segundo botão",
Modifier
.fillMaxWidth()
.padding(8.dp)
.background(Color.Gray, RoundedCornerShape(20.dp))
)
}
这是迄今为止我最喜欢JetPack Compiss的特征之一! ð
重复使用修饰符
良好的实用是重复使用修饰符,这是正确的!我们有能力提取修饰符并重用它们:
Column {
val myButtonModifier = Modifier
.fillMaxWidth()
.padding(8.dp)
.background(Color.Gray, RoundedCornerShape(20.dp))
MyButton("meu primeiro botão")
MyButton(
"meu segundo botão",
myButtonModifier
)
Box(
modifier = myButtonModifier
.height(200.dp)
)
}
在此样本中,我们重复使用与第三个Box
中的第二个植物体相同的外观!请注意,我们仍然保持着根据需要调整Box
的灵活性,例如应用不同的高度。
重用修饰符的优势
除了减少代码量外,Modifier
的重复使用有助于优化重新分配,因为在受影响的组合中也再次执行修饰符。
影响更大的案例是倾向于不断推荐的实施,例如使用动物或实施Lazies(LazyColumn
,Koud5等)。
修改器提取在Composebles的范围之外
要优化这些情况,我们必须考虑在组合范围之外的修饰符提取。首先,它似乎是抽象的,让我们考虑一个例子:
val myButtonModifier = Modifier
.padding(8.dp)
.fillMaxWidth()
.background(Color.Gray, RoundedCornerShape(20.dp))
@Composable
fun MyLazyColumn() {
LazyColumn {
items(1000) {
MyButton(
"meu segundo botão",
myButtonModifier
)
}
}
}
是!只有这种小的提取才能通过频繁的重组来优化和大量实现!另外,可以将修饰符重复使用其他组合物,因为它是全球访问的。
在组合范围内的修改器提取
尽管从范围中提取的修改器提取具有其优势,但在某些情况下,不可能,例如特定组合的范围的修饰符。
在这种情况下,最著名的组合是布局为koud1,koud7或koud8。两者都提供特定的范围,可允许使用独家修饰符,例如允许儿童对齐的Koud9:
@Composable
fun MyColumn() {
Column {
val myButtonModifier = Modifier
.padding(8.dp)
.width(200.dp)
.background(Color.Gray, RoundedCornerShape(20.dp))
.align(CenterHorizontally)
MyButton("meu primeiro botão")
MyButton(
"meu segundo botão",
myButtonModifier
)
Box(
modifier = myButtonModifier
.height(200.dp)
)
}
}
一种替代方法是通过添加该范围的修饰符来提取可组成的新组成:
val myButtonModifier = Modifier
.padding(8.dp)
.width(200.dp)
.background(Color.Gray, RoundedCornerShape(20.dp))
@Composable
fun MyColumn() {
Column {
val myButtonColumnModifier =
myButtonModifier
.align(CenterHorizontally)
MyButton("meu primeiro botão")
MyButton(
"meu segundo botão",
myButtonColumnModifier
)
Box(
modifier = myButtonColumnModifier
.height(200.dp)
)
}
}
您如何看待使用修饰符的这些良好实践?有一些不同的技术使用并找到有趣的分享,享受和留在这里的评论。 ð