Skip to content

Instantly share code, notes, and snippets.

@senamit2708
Created December 24, 2025 06:57
Show Gist options
  • Select an option

  • Save senamit2708/6ad7a3e14d4a5e96ab277ae138a38c62 to your computer and use it in GitHub Desktop.

Select an option

Save senamit2708/6ad7a3e14d4a5e96ab277ae138a38c62 to your computer and use it in GitHub Desktop.
Bottom Sheet basic
package com.plcoding.m3_bottomsheet
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.Image
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.material3.BottomSheetScaffold
import androidx.compose.material3.Button
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.ModalBottomSheet
import androidx.compose.material3.Surface
import androidx.compose.material3.Text
import androidx.compose.material3.rememberBottomSheetScaffoldState
import androidx.compose.material3.rememberModalBottomSheetState
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import com.plcoding.m3_bottomsheet.ui.theme.M3BottomSheetTheme
import kotlinx.coroutines.launch
@OptIn(ExperimentalMaterial3Api::class)
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
M3BottomSheetTheme {
Surface(
modifier = Modifier.fillMaxSize(),
color = MaterialTheme.colorScheme.background
) {
val sheetState = rememberModalBottomSheetState()
var isSheetOpen by rememberSaveable {
mutableStateOf(false)
}
val scaffoldState = rememberBottomSheetScaffoldState()
val scope = rememberCoroutineScope()
BottomSheetScaffold(
scaffoldState = scaffoldState,
sheetContent = {
Image(
painter = painterResource(id = R.drawable.kermit),
contentDescription = null
)
},
sheetPeekHeight = 0.dp
) {
Box(
modifier = Modifier.fillMaxSize(),
contentAlignment = Alignment.Center
) {
Button(onClick = {
scope.launch {
scaffoldState.bottomSheetState.expand()
}
}) {
Text(text = "Open sheet")
}
}
}
// if(isSheetOpen) {
// ModalBottomSheet(
// sheetState = sheetState,
// onDismissRequest = {
// isSheetOpen = false
// },
// ) {
// Image(
// painter = painterResource(id = R.drawable.kermit),
// contentDescription = null
// )
// }
// }
}
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment