From 0d09dd6e26eb688cf5d05e1bf49a0b88d2498050 Mon Sep 17 00:00:00 2001 From: lisonge Date: Fri, 8 Mar 2024 22:36:27 +0800 Subject: [PATCH] perf: app config page scrollToItem 0 --- .../main/kotlin/li/songe/gkd/ui/AppConfigPage.kt | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/app/src/main/kotlin/li/songe/gkd/ui/AppConfigPage.kt b/app/src/main/kotlin/li/songe/gkd/ui/AppConfigPage.kt index 7cc6fbc97..5e21efb38 100644 --- a/app/src/main/kotlin/li/songe/gkd/ui/AppConfigPage.kt +++ b/app/src/main/kotlin/li/songe/gkd/ui/AppConfigPage.kt @@ -14,6 +14,7 @@ import androidx.compose.foundation.layout.width import androidx.compose.foundation.layout.wrapContentSize import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items +import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.material.icons.Icons import androidx.compose.material.icons.automirrored.filled.ArrowBack import androidx.compose.material.icons.automirrored.filled.Sort @@ -33,6 +34,7 @@ import androidx.compose.material3.Text import androidx.compose.material3.TopAppBar import androidx.compose.material3.TopAppBarDefaults import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.collectAsState import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf @@ -77,6 +79,15 @@ fun AppConfigPage(appId: String) { val appGroups by vm.appGroupsFlow.collectAsState() val scrollBehavior = TopAppBarDefaults.enterAlwaysScrollBehavior() var expanded by remember { mutableStateOf(false) } + val listState = rememberLazyListState() + var isFirstVisit by remember { mutableStateOf(false) } + LaunchedEffect(globalGroups, appGroups) { + if (isFirstVisit) { + listState.scrollToItem(0) + } else { + isFirstVisit = true + } + } Scaffold( modifier = Modifier.nestedScroll(scrollBehavior.nestedScrollConnection), topBar = { @@ -152,7 +163,8 @@ fun AppConfigPage(appId: String) { }, ) { contentPadding -> LazyColumn( - modifier = Modifier.padding(contentPadding) + modifier = Modifier.padding(contentPadding), + state = listState, ) { items(globalGroups) { g -> val excludeData = remember(g.config?.exclude) {