- 1 سال قبل
- علیرضا نصراله زاده
ذخیره State صفحات در Bottom Navigation و Navigation Compose جت پک کامپوز
در Jetpack Compose، شما میتوانید وضعیت (state) صفحات را در Bottom Navigation و Navigation Compose ذخیره کنید. برای این کار، میتوانید از مفهوم "Navigation Component" استفاده کنید که از طریق آن میتوانید وضعیت فعلی صفحه را در یک NavBackStackEntry ذخیره کنید.
در ادامه یک مثال ارائه میدهم که نحوه ذخیره وضعیت صفحات در Bottom Navigation با استفاده از Jetpack Compose را نشان میدهد:
kotlin
Copy code
@Composable
fun MyApp() {
val navController = rememberNavController()
val items = listOf(Screen.Home, Screen.Profile, Screen.Settings)
val currentRoute = currentRoute(navController)
Scaffold(
bottomBar = {
BottomNavigation {
items.forEach { screen ->
BottomNavigationItem(
icon = { Icon(screen.icon, contentDescription = null) },
label = { Text(screen.title) },
selected = currentRoute == screen.route,
onClick = {
navController.navigate(screen.route) {
// برای هر صفحه میتوانید تنظیمات مربوط به ناوبری را تنظیم کنید
launchSingleTop = true
restoreState = true
}
}
)
}
}
}
) { innerPadding ->
NavHost(navController, startDestination = Screen.Home.route) {
composable(Screen.Home.route) {
// محتوای صفحه خانه
}
composable(Screen.Profile.route) {
// محتوای صفحه پروفایل
}
composable(Screen.Settings.route) {
// محتوای صفحه تنظیمات
}
}
}
}
@Composable
fun currentRoute(navController: NavController): String? {
val navBackStackEntry by navController.currentBackStackEntryAsState()
return navBackStackEntry?.destination?.route
}
enum class Screen(val route: String, val title: String, val icon: ImageVector) {
Home("home", "خانه", Icons.Filled.Home),
Profile("profile", "پروفایل", Icons.Filled.Person),
Settings("settings", "تنظیمات", Icons.Filled.Settings)
}
در این مثال، از Scaffold و BottomNavigation در Jetpack Compose استفاده شده است. همچنین از NavHost برای نمایش محتوای مربوط به هر صفحه استفاده میشود. تابع currentRoute برای دریافت مسیر صفحه فعلی استفاده میشود.
با استفاده از این روش، وضعیت (state) صفحات را در Bottom Navigation و Navigation Compose میتوانید به درستی ذخیره کنید و همچنین برگشت به صفحات قبلی را نیز پشتیبانی کنید.