我画条形图。我想在列表的末尾画一个带有动画的加载栏(作为一个单独的函数),但是我不能调用@Composable函数。错误代码:
@Composable调用只能在@Composable函数的上下文中发生
@Composable
fun Chart(
modifier: Modifier = Modifier,
model: BarData
) {
Column(modifier = modifier) {
Canvas(
modifier = Modifier
.weight(1f)
.fillMaxWidth()
) {
val radius = 45f
val (paidBarHeight, incomingBarHeight) = computeBarsHeights(
paidRatioAnim,
incomingRatioAnim,
size
)
if(!model.isLoading) {
rotate(180f, pivot = size.center) {
drawRoundRect(
color = ChartBackgroundGreyColor,
size = size.copy(height = incomingBarHeight),
cornerRadius = CornerRadius(radius, radius)
)
drawRoundRect(
color = ChartBasicGreenColor,
size = size.copy(height = paidBarHeight),
cornerRadius = CornerRadius(radius, radius)
)
}
} else {
//HOW TO DRAW LOADING BAR
}
}
} }个文件夹
1条答案
按热度按时间f45qwnt81#
正如您所看到的,
Canvas
可组合对象不允许您直接在其中绘制。在这方面,它类似于LazyColumn
。您需要使用DrawScope
方法来绘制所需的内容。在这种情况下,您应该在Canvas外部绘制加载栏: