Jetpack Compose - Snackbar

In this Jetpack compose tutorial we will learn How to create Snackbar in an Android application using Jetpack Compose.

Snack bars provide brief messages about app processes at the bottom of the screen.

How to show Snackbar inside Snackbar host in android jetpack compose.



package
com.compose.example

import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.material.SnackbarDuration
import androidx.compose.material.SnackbarHost
import androidx.compose.material.SnackbarHostState
import androidx.compose.material3.Button
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Surface
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.remember
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import com.compose.example.ui.theme.ComposeExampleTheme
import kotlinx.coroutines.launch

class MainActivity : ComponentActivity() {

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
ComposeExampleTheme {
Surface(
modifier = Modifier.fillMaxSize(),
color = MaterialTheme.colorScheme.background
) {
MainContent()
}
}
}
}
}



@Composable
fun MainContent() {
val snackState = remember { SnackbarHostState()}
val scope = rememberCoroutineScope()

fun launchSnackbar(message: String, actionLabel : String?=null, duration: SnackbarDuration = SnackbarDuration.Short){
scope.launch {
snackState.showSnackbar(message = message,actionLabel=actionLabel, duration=duration)
}
}
Box(contentAlignment = Alignment.Center) {
Button(
onClick = {
// * Snackbar
launchSnackbar(message = "Hi i am snackbar", actionLabel = "Hide", duration = SnackbarDuration.Indefinite)
},
modifier = Modifier.align(Alignment.Center)
) { Text(text = "Show Snackbar") }
}
Box(modifier = Modifier.fillMaxSize(), Alignment.BottomCenter){
SnackbarHost(hostState = snackState)
}
}

..

To change Snackbar color

Box(modifier = Modifier.fillMaxSize(), Alignment.BottomCenter){

                   //  SnackbarHost(hostState = snackState)

                    // to change color
                    SnackbarHost(hostState = snackState) {
                       Snackbar(
                            snackbarData = it,
                            containerColor = MaterialTheme.colorScheme.primary,
                            contentColor = MaterialTheme.colorScheme.onPrimary
                        )
                    }
                }



GET source code on Github:

Comments