当前位置:网站首页>Kotlin compose custom compositionlocalprovider compositionlocal

Kotlin compose custom compositionlocalprovider compositionlocal

2022-06-27 03:48:00 Ango cannot move

effect

Or you can change some styles by implicitly passing parameters

Customize MyCard.kt

package com.anguomob.jecpack.activity.compose.composition.local

import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.material.Card
import androidx.compose.runtime.Composable
import androidx.compose.runtime.compositionLocalOf
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.dp
import androidx.compose.ui.graphics.Color

data class Elevations(val card: Dp = 0.dp)

val LocalElevations = compositionLocalOf {
    Elevations()
}

object CardElevation {
    val height: Elevations
        get() = Elevations(card = 10.dp)
    val low: Elevations
        get() = Elevations(card = 5.dp)
}

@Composable
fun MyCard(
    elevation: Dp = LocalElevations.current.card,
    backgroundColor: Color,
    content: @Composable () -> Unit
) {
    Card(
        elevation = elevation,
        modifier = Modifier.size(200.dp),
        backgroundColor = backgroundColor,
        content = content
    )
}

  Use

package com.anguomob.jecpack.activity.compose.composition.local

import androidx.compose.foundation.layout.Column
import androidx.compose.material.*
import androidx.compose.material.SnackbarDefaults.backgroundColor
import androidx.compose.runtime.Composable
import androidx.compose.runtime.CompositionLocalProvider
import androidx.compose.ui.platform.LocalContext
import com.anguomob.jecpack.R


@Composable
fun CompositionSample2() {
    Column() {
        CompositionLocalProvider(LocalElevations provides CardElevation.height) {
            MyCard(

                backgroundColor = MaterialTheme.colors.onSurface.copy(alpha = 0.05f)
            ) {

            }

        }
        MyCard(backgroundColor = MaterialTheme.colors.onSurface.copy(alpha = 0.05f)) {

        }

    }
}

I'm still ignorant of my first study CompositionLocal

Now it is very simple and easy to understand

Chapter one :

Kotlin Compose Implicit parameters CompositionLocalProvider_ Ango Mobile Blog -CSDN Blog

原网站

版权声明
本文为[Ango cannot move]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/178/202206270336305744.html