đ Jetpack Compose-āĻ Navigation Stack āϏāĻšāĻāĻাāĻŦে āĻŦুāĻুāύ!
đ Jetpack Compose-āĻ Navigation Stack āϏāĻšāĻāĻাāĻŦে āĻŦুāĻুāύ!
đ§ āĻāĻāĻি āϏাāϧাāϰāĻŖ āĻāĻĻাāĻšāϰāĻŖ āĻĻিā§ে āĻাāĻŦুāύ:
āĻāĻĒāύি āϝāĻĻি YouTube āĻ
্āϝাāĻĒে āĻĨাāĻেāύ, āϤাāĻšāϞে āĻী āĻšā§?
- đ āĻšোāĻŽ āϏ্āĻ্āϰিāύ → đĨ āĻিāĻĄিāĻ āϏ্āĻ্āϰিāύ → đ āĻāĻŽেāύ্āĻ āϏ্āĻ্āϰিāύ
- āϝāĻĻি Back Button āĻাāĻĒেāύ, āϤাāĻšāϞে āĻি āĻšāĻŦে?
- āĻāĻĒāύি đ āĻāĻŽেāύ্āĻ āϏ্āĻ্āϰিāύ āĻĨেāĻে đĨ āĻিāĻĄিāĻ āϏ্āĻ্āϰিāύে āĻĢিāϰāĻŦেāύ।
- āĻāĻŦাāϰ Back āĻাāĻĒāϞে đ āĻšোāĻŽ āϏ্āĻ্āϰিāύে āĻĢিāϰāĻŦেāύ।
đ āĻāĻি āĻšāĻ্āĻে Navigation Stack!
✅ Navigation Stack āĻী?
Navigation Stack āĻāĻŽāύ āĻāĻāĻি āϏ্āĻ্āϝাāĻ (Stack Data Structure) āϝেāĻাāύে Screen (Destination) āĻুāϞো āϧাāĻĒে āϧাāĻĒে Push & Pop āĻšā§!
✋ Stack-āĻāϰ āĻাāĻ āĻŦুāĻāϤে āĻোāĻ āĻāĻĻাāĻšāϰāĻŖ āĻĻেāĻুāύ:
| āĻ্āϰিā§াāĻāϞাāĻĒ | Navigation Stack | āĻŦ্āϝাāĻ্āϝা |
|---|---|---|
navigate("ScreenB") |
[đ āĻšোāĻŽ] → [đĨ āĻিāĻĄিāĻ] | āύāϤুāύ āϏ্āĻ্āϰিāύ Push (āϝোāĻ) āĻšāϞো |
navigate("ScreenC") |
[đ āĻšোāĻŽ] → [đĨ āĻিāĻĄিāĻ] → [đ āĻāĻŽেāύ্āĻ] | āĻāϰেāĻāĻি āϏ্āĻ্āϰিāύ Push āĻšāϞো |
| Back Button | [đ āĻšোāĻŽ] → [đĨ āĻিāĻĄিāĻ] | āϞাāϏ্āĻ āϏ্āĻ্āϰিāύ Pop (āϏāϰিā§ে āĻĢেāϞা) āĻšāϞো |
đĨ āĻāĻাāĻŦেāĻ Navigation Stack āĻাāĻ āĻāϰে!
✅ Jetpack Compose-āĻ Navigation Stack āĻŦ্āϝāĻŦāĻšাāϰ
Jetpack Compose-āĻ Navigation Component āĻŦ্āϝāĻŦāĻšাāϰ āĻāϰে āϏāĻšāĻেāĻ Navigation Stack āĻš্āϝাāύ্āĻĄেāϞ āĻāϰা āϝাā§!
1️⃣ Navigation Controller āϏেāĻāĻāĻĒ āĻāϰুāύ
āĻĒ্āϰāĻĨāĻŽে NavController āϤৈāϰি āĻāϰুāύ đ
val navController = rememberNavController()
2️⃣ Navigation Host āϏেāĻ āĻāϰুāύ
NavHost(navController, startDestination = "home") {
composable("home") { HomeScreen(navController) }
composable("video") { VideoScreen(navController) }
composable("comment") { CommentScreen(navController) }
}
đ āĻāĻাāύে "home", "video", "comment" āĻšāϞো Navigation Destinations āĻŦা Screen Routes!
✅ āĻিāĻাāĻŦে Navigate (āĻĒেāĻ āĻĒāϰিāĻŦāϰ্āϤāύ) āĻāϰāĻŦেāύ?
đ āύāϤুāύ āϏ্āĻ্āϰিāύে āϝেāϤে navController.navigate(route) āĻŦ্āϝāĻŦāĻšাāϰ āĻāϰুāύ!
Button(onClick = { navController.navigate("video") }) {
Text("Go to Video Screen")
}
đ āĻāĻি "video" āϏ্āĻ্āϰিāύে āύিā§ে āϝাāĻŦে (Stack-āĻ āύāϤুāύ āϏ্āĻ্āϰিāύ Push āĻšāĻŦে!)
✅ āĻিāĻাāĻŦে Back Navigate āĻāϰāĻŦেāύ?
đ Back āϝেāϤে navController.popBackStack() āĻŦ্āϝāĻŦāĻšাāϰ āĻāϰুāύ!
Button(onClick = { navController.popBackStack() }) {
Text("Go Back")
}
đ āĻāĻি āĻŦāϰ্āϤāĻŽাāύ āϏ্āĻ্āϰিāύ Stack āĻĨেāĻে āϏāϰিā§ে āĻĢেāϞāĻŦে (Pop āĻāϰāĻŦে!)
✅ āϝāĻĻি Stack-āĻ āĻĨাāĻা āϏāĻŦ āϏ্āĻ্āϰিāύ āĻ্āϞিā§াāϰ āĻāϰāϤে āĻাāύ?
đ Back Stack āĻ্āϞিā§াāϰ āĻāϰে āύিāϰ্āĻĻিāώ্āĻ āϏ্āĻ্āϰিāύে āϝাāĻā§াāϰ āĻāύ্āϝ:
navController.navigate("home") {
popUpTo(0) // āϏāĻŦāĻিāĻু Remove āĻāϰāĻŦে
}
đ āĻāĻি "home" āϏ্āĻ্āϰিāύ āϰেāĻে āĻŦাāĻি āϏāĻŦ āϏ্āĻ্āϰিāύ āϰিāĻŽুāĻ āĻāϰāĻŦে!
✅ āĻāĻুāϞো āĻāĻāϏাāĻĨে āĻোāĻĄ āĻāϰāϞে āĻেāĻŽāύ āĻšāĻŦে?
@Composable
fun HomeScreen(navController: NavController) {
Column {
Text("đ Home Screen", fontSize = 24.sp)
Button(onClick = { navController.navigate("video") }) {
Text("Go to Video Screen")
}
}
}
@Composable
fun VideoScreen(navController: NavController) {
Column {
Text("đĨ Video Screen", fontSize = 24.sp)
Button(onClick = { navController.navigate("comment") }) {
Text("Go to Comment Screen")
}
Button(onClick = { navController.popBackStack() }) {
Text("Go Back")
}
}
}
@Composable
fun CommentScreen(navController: NavController) {
Column {
Text("đ Comment Screen", fontSize = 24.sp)
Button(onClick = { navController.popBackStack() }) {
Text("Go Back")
}
}
}
đ āϏংāĻ্āώেāĻĒে āĻŽāύে āϰাāĻুāύ:
navController.navigate("route")→ āύāϤুāύ āϏ্āĻ্āϰিāύে āϝাāĻŦে (Push)navController.popBackStack()→ Back (Pop) āĻšāĻŦেpopUpTo("route")→ āĻিāĻু āϏ্āĻ্āϰিāύ Stack āĻĨেāĻে Remove āĻāϰāĻŦেpopUpTo(0)→ āϏāĻŦ Stack āĻ্āϞিā§াāϰ āĻāϰāĻŦে
✅ āĻāĻāύ āϏāĻšāĻāĻাāĻŦে Navigation Stack āĻŦ্āϝāĻŦāĻšাāϰ āĻāϰāϤে āĻĒাāϰāĻŦেāύ! đ
āĻোāύো āϏāĻŽāϏ্āϝা āĻšāϞে āĻāĻŽাāĻে āĻাāύাāύ! đ
Comments
Post a Comment