Skip to content

Instantly share code, notes, and snippets.

View MrNtlu's full-sized avatar
👨‍💻
Coding

Burak Fidan MrNtlu

👨‍💻
Coding
View GitHub Profile
@MrNtlu
MrNtlu / build.gradle
Created December 6, 2022 13:24
Bottom Sheet Gradle
//...
android {
//...
buildFeatures {
compose true
}
composeOptions {
kotlinCompilerExtensionVersion '1.3.1'
@MrNtlu
MrNtlu / MainActivity.kt
Created December 6, 2022 13:51
Bottom Sheet Activity Part 1
val coroutineScope = rememberCoroutineScope()
val modalSheetState = rememberModalBottomSheetState(
initialValue = ModalBottomSheetValue.Hidden,
confirmStateChange = { it != ModalBottomSheetValue.HalfExpanded },
skipHalfExpanded = true,
)
@MrNtlu
MrNtlu / MainActivity.kt
Created December 6, 2022 14:26
Bottom Sheet Activity Part 2
ModalBottomSheetLayout(
sheetState = modalSheetState,
sheetShape = RoundedCornerShape(topStart = 12.dp, topEnd = 12.dp),
sheetContent = {
Column(
//...
) {
//...
Button(
@MrNtlu
MrNtlu / MainActivity.kt
Created December 6, 2022 14:44
Bottom Sheet Activity Part 3 Extra
BackHandler(modalSheetState.isVisible) {
coroutineScope.launch { modalSheetState.hide() }
}
@MrNtlu
MrNtlu / MainActivity.kt
Last active December 6, 2022 14:50
Bottom Sheet Activity Full Code
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
JetpackComposeBottomSheetTheme {
Surface(
modifier = Modifier.fillMaxSize(),
color = MaterialTheme.colors.background
) {
BottomSheetLayout()
@MrNtlu
MrNtlu / MainActivity.kt
Created December 6, 2022 14:51
Bottom Sheet Activity Part 4 Extra
@Composable
fun BottomSheetLayout() {
//...
var isSheetFullScreen by remember { mutableStateOf(false) }
val roundedCornerRadius = if (isSheetFullScreen) 0.dp else 12.dp
val modifier = if (isSheetFullScreen)
Modifier
.fillMaxSize()
else
@MrNtlu
MrNtlu / MainActivity.kt
Created December 6, 2022 15:01
Bottom Sheet Activity Skeleton
@Composable
fun BottomSheetLayout() {
val coroutineScope = rememberCoroutineScope()
val modalSheetState = rememberModalBottomSheetState(
initialValue = ModalBottomSheetValue.Hidden,
confirmStateChange = { it != ModalBottomSheetValue.HalfExpanded },
skipHalfExpanded = true
)
ModalBottomSheetLayout(
@MrNtlu
MrNtlu / Color.kt
Created December 7, 2022 11:09
Jetpack Compose Dark Theme Colors
// Material3 Colors
// Light
val PrimaryLight = Color(0xFF0061a4)
val OnPrimaryLight = Color(0xFFFFFFFF)
val PrimaryContainerLight = Color(0xFFd1e4ff)
val OnPrimaryContainerLight = Color(0xFF001d36)
val SecondaryLight = Color(0xFF535f70)
val OnSecondaryLight = Color(0xFFffffff)
@MrNtlu
MrNtlu / Theme.kt
Last active December 7, 2022 11:52
Jetpack Compose Dark Theme Theme File
private val DarkColorPalette = darkColorScheme(
primary = PrimaryDark,
onPrimary = OnPrimaryDark,
primaryContainer = PrimaryContainerDark,
onPrimaryContainer = OnPrimaryContainerDark,
secondary = SecondaryDark,
onSecondary = OnSecondaryDark,
secondaryContainer = SecondaryContainerDark,
onSecondaryContainer = OnSecondaryContainerDark,
tertiary = TertiaryDark,
@MrNtlu
MrNtlu / DataStoreUtil.kt
Created December 7, 2022 12:27
Jetpack Compose Dark Theme DataStore Util
class DataStoreUtil(private val context: Context) {
companion object {
private val Context.dataStore: DataStore<Preferences> by preferencesDataStore("settings")
val THEME_KEY = booleanPreferencesKey("theme")
}
fun getTheme(isSystemDarkTheme: Boolean): Flow<Boolean> = context.dataStore.data
.map { preferences ->
preferences[THEME_KEY] ?: isSystemDarkTheme