fix: 隐藏首页动态入口失效

This commit is contained in:
HuanCheng65 2023-07-23 22:23:47 +08:00
parent fed1b0c284
commit 9cc4d7ec8d
No known key found for this signature in database
GPG Key ID: 5EC9DD60A32C7360
1 changed files with 59 additions and 51 deletions

View File

@ -122,65 +122,73 @@ fun MainPage(
}
}
val pagerState = rememberPagerState()
val hideExplore by rememberPreferenceAsState(
key = booleanPreferencesKey("hideExplore"),
defaultValue = false
defaultValue = LocalContext.current.appPreferences.hideExplore
)
val pagerState = rememberPagerState()
LaunchedEffect(hideExplore) {
if (pagerState.currentPage == 3 && hideExplore) {
pagerState.scrollToPage(2)
}
}
val coroutineScope = rememberCoroutineScope()
val themeColors = ExtendedTheme.colors
val navigationItems = remember(messageCount) {
listOfNotNull(
NavigationItem(
id = "home",
icon = { if (it) Icons.Rounded.Inventory2 else Icons.Outlined.Inventory2 },
title = { stringResource(id = R.string.title_main) },
content = {
HomePage(
canOpenExplore = !LocalContext.current.appPreferences.hideExplore
) {
coroutineScope.launch {
pagerState.scrollToPage(1)
val navigationItems by remember {
derivedStateOf {
listOfNotNull(
NavigationItem(
id = "home",
icon = { if (it) Icons.Rounded.Inventory2 else Icons.Outlined.Inventory2 },
title = { stringResource(id = R.string.title_main) },
content = {
HomePage(
canOpenExplore = !LocalContext.current.appPreferences.hideExplore
) {
coroutineScope.launch {
pagerState.scrollToPage(1)
}
}
}
}
),
if (hideExplore) null
else NavigationItem(
id = "explore",
icon = {
if (it) ImageVector.vectorResource(id = R.drawable.ic_round_toys)
else ImageVector.vectorResource(id = R.drawable.ic_outline_toys)
},
title = { stringResource(id = R.string.title_explore) },
content = {
ExplorePage()
}
),
NavigationItem(
id = "notification",
icon = { if (it) Icons.Rounded.Notifications else Icons.Outlined.Notifications },
title = { stringResource(id = R.string.title_notifications) },
badge = messageCount > 0,
badgeText = "$messageCount",
onClick = {
viewModel.send(MainUiIntent.NewMessage.Clear)
},
content = {
NotificationsPage()
}
),
NavigationItem(
id = "user",
icon = { if (it) Icons.Rounded.AccountCircle else Icons.Outlined.AccountCircle },
title = { stringResource(id = R.string.title_user) },
content = {
UserPage()
}
),
).toImmutableList()
),
if (hideExplore) null
else NavigationItem(
id = "explore",
icon = {
if (it) ImageVector.vectorResource(id = R.drawable.ic_round_toys)
else ImageVector.vectorResource(id = R.drawable.ic_outline_toys)
},
title = { stringResource(id = R.string.title_explore) },
content = {
ExplorePage()
}
),
NavigationItem(
id = "notification",
icon = { if (it) Icons.Rounded.Notifications else Icons.Outlined.Notifications },
title = { stringResource(id = R.string.title_notifications) },
badge = messageCount > 0,
badgeText = "$messageCount",
onClick = {
viewModel.send(MainUiIntent.NewMessage.Clear)
},
content = {
NotificationsPage()
}
),
NavigationItem(
id = "user",
icon = { if (it) Icons.Rounded.AccountCircle else Icons.Outlined.AccountCircle },
title = { stringResource(id = R.string.title_user) },
content = {
UserPage()
}
),
).toImmutableList()
}
}
val pageCount by remember { derivedStateOf { navigationItems.size } }
val navigationType by remember {
derivedStateOf {
@ -262,7 +270,7 @@ fun MainPage(
) { paddingValues ->
LazyLoadHorizontalPager(
contentPadding = paddingValues,
pageCount = navigationItems.size,
pageCount = pageCount,
state = pagerState,
key = { navigationItems[it].id },
modifier = Modifier.fillMaxSize(),