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 / ThemeViewModel.kt
Created December 7, 2022 12:32
Jetpack Compose Dark Theme ViewModel
class ThemeViewModel: ViewModel() {
var isDarkThemeEnabled = mutableStateOf(false)
private set
fun setTheme(isDarkTheme: Boolean) {
isDarkThemeEnabled.value = isDarkTheme
}
}
@MrNtlu
MrNtlu / MainActivity.kt
Created December 7, 2022 12:58
Jetpack Compose Dark Theme Main Activity
class MainActivity : ComponentActivity() {
private val themeViewModel: ThemeViewModel by viewModels()
private lateinit var dataStoreUtil: DataStoreUtil
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
dataStoreUtil = DataStoreUtil(applicationContext)
//Checks if the system theme is DarkMode or not.
@MrNtlu
MrNtlu / MainActivity.kt
Created December 7, 2022 13:12
Jetpack Compose Dark Theme Main Activity Part 1
class MainActivity : ComponentActivity() {
private val themeViewModel: ThemeViewModel by viewModels()
private lateinit var dataStoreUtil: DataStoreUtil
override fun onCreate(savedInstanceState: Bundle?) {
//...
dataStoreUtil = DataStoreUtil(applicationContext)
val systemTheme = when (resources.configuration.uiMode and Configuration.UI_MODE_NIGHT_MASK) {
Configuration.UI_MODE_NIGHT_YES -> { true }
@MrNtlu
MrNtlu / MainActivity.kt
Created December 7, 2022 13:20
Jetpack Compose Dark Theme Main Activity Part 2
@Composable
fun DarkThemeScreen(
dataStoreUtil: DataStoreUtil,
themeViewModel: ThemeViewModel,
) {
var switchState by remember {themeViewModel.isDarkThemeEnabled }
val coroutineScope = rememberCoroutineScope()
Scaffold {
Switch(
@MrNtlu
MrNtlu / NavigationComposable.kt
Last active December 8, 2022 16:33
Jetpack Compose Navigation Part 1
@Composable
fun NavigationComposable(
navController: NavHostController,
) {
NavHost(navController = navController, startDestination = "home") {
composable("home") {
HomeScreen(navController = navController)
}
composable(
@MrNtlu
MrNtlu / MainActivity.kt
Created December 8, 2022 16:45
Jetpack Compose Navigation Part 2
class MainActivity : ComponentActivity() {
private lateinit var navController: NavHostController
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
JetpackComposeUIComponentsTheme {
navController = rememberNavController()
Surface(
//...
navController.navigate("settings")
// Pop everything up to the "home" destination off the back stack before
// navigating to the "settings" destination
navController.navigate("settings") {
popUpTo("home")
}
// Pop everything up to and including the "home" destination off
// the back stack before navigating to the "settings" destination
// Route "profile/{userId}"
navController.navigate("profile/user1234")
// Route "profile?userId={userId}" Optional Argument
navController.navigate("profile?userId=user1234")
@MrNtlu
MrNtlu / MainActivity.kt
Created December 8, 2022 17:25
Jetpack Compose App Bar Part 1
@Composable
fun MainScreen(
navController: NavHostController,
) {
Scaffold(
//...
topBar = {
TopAppBar(
title = {
Text(text = "Jetpack Compose")
navigationIcon = {
IconButton(
onClick = { coroutineScope.launch { scaffoldState.drawerState.open() } }
) {
Icon(imageVector = Icons.Rounded.Menu, contentDescription = "Drawer Icon")
}
},