How do I add two `PaddingValues` together? ```Laz...
# compose
u
How do I add two
PaddingValues
together?
Copy code
LazyColumn(
    contentPadding = WindowInsets.navigationBars.asPaddingValues() + PaddingValues(16.dp),
I need to add navigationbar inset + my padding together
Copy code
@Composable
operator fun PaddingValues.plus(paddingValues: PaddingValues): PaddingValues {
    val layoutDirection = LocalLayoutDirection.current
    return PaddingValues(
        start = calculateStartPadding(layoutDirection) + paddingValues.calculateStartPadding(layoutDirection),
        top = calculateTopPadding() + paddingValues.calculateTopPadding(),
        end = calculateEndPadding(layoutDirection) + paddingValues.calculateEndPadding(layoutDirection),
        bottom = calculateBottomPadding() + paddingValues.calculateBottomPadding()
    )
}
This works, but feels wrong..? // Edit
Copy code
private class AddPaddingValues(val value1: PaddingValues, val value2: PaddingValues) : PaddingValues {
    override fun calculateBottomPadding(): Dp {
        return value1.calculateBottomPadding() + value2.calculateBottomPadding()
    }

    override fun calculateLeftPadding(layoutDirection: LayoutDirection): Dp {
        return value1.calculateLeftPadding(layoutDirection) + value2.calculateLeftPadding(layoutDirection)
    }

    override fun calculateRightPadding(layoutDirection: LayoutDirection): Dp {
        return value1.calculateRightPadding(layoutDirection) + value2.calculateRightPadding(layoutDirection)
    }

    override fun calculateTopPadding(): Dp {
        return value1.calculateTopPadding() + value2.calculateTopPadding()
    }
}

operator fun PaddingValues.plus(paddingValues: PaddingValues): PaddingValues {
    return AddPaddingValues(this, paddingValues)
}
how is this?
👀 1
🧵 3
I need to add navigationbar inset + my padding together
Copy code
@Composable
operator fun PaddingValues.plus(paddingValues: PaddingValues): PaddingValues {
    val layoutDirection = LocalLayoutDirection.current
    return PaddingValues(
        start = calculateStartPadding(layoutDirection) + paddingValues.calculateStartPadding(layoutDirection),
        top = calculateTopPadding() + paddingValues.calculateTopPadding(),
        end = calculateEndPadding(layoutDirection) + paddingValues.calculateEndPadding(layoutDirection),
        bottom = calculateBottomPadding() + paddingValues.calculateBottomPadding()
    )
}
This works, but feels wrong..? // Edit
Copy code
private class AddPaddingValues(val value1: PaddingValues, val value2: PaddingValues) : PaddingValues {
    override fun calculateBottomPadding(): Dp {
        return value1.calculateBottomPadding() + value2.calculateBottomPadding()
    }

    override fun calculateLeftPadding(layoutDirection: LayoutDirection): Dp {
        return value1.calculateLeftPadding(layoutDirection) + value2.calculateLeftPadding(layoutDirection)
    }

    override fun calculateRightPadding(layoutDirection: LayoutDirection): Dp {
        return value1.calculateRightPadding(layoutDirection) + value2.calculateRightPadding(layoutDirection)
    }

    override fun calculateTopPadding(): Dp {
        return value1.calculateTopPadding() + value2.calculateTopPadding()
    }
}

operator fun PaddingValues.plus(paddingValues: PaddingValues): PaddingValues {
    return AddPaddingValues(this, paddingValues)
}
how is this? (edited)
g