diff options
| author | 2023-06-27 14:54:49 +0000 | |
|---|---|---|
| committer | 2023-06-27 14:54:49 +0000 | |
| commit | 446095024537286f8e746e931edae21740b1a916 (patch) | |
| tree | f9f26c8619acb58724f05464e4fabd2c7f23f0d8 | |
| parent | 77fa67e4248fa9609e9446e051a0f403e9cae8f5 (diff) | |
| parent | fd095048304b5130410b50c2375628c7fb20b721 (diff) | |
Merge "Move page count to rememberPagerState" into udc-dev-plus-aosp
| -rw-r--r-- | packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/scaffold/SettingsPager.kt | 50 |
1 files changed, 2 insertions, 48 deletions
diff --git a/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/scaffold/SettingsPager.kt b/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/scaffold/SettingsPager.kt index 79635a0c8280..aa148b022b92 100644 --- a/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/scaffold/SettingsPager.kt +++ b/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/scaffold/SettingsPager.kt @@ -20,20 +20,12 @@ import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.padding import androidx.compose.foundation.pager.HorizontalPager -import androidx.compose.foundation.pager.PagerState import androidx.compose.foundation.pager.rememberPagerState import androidx.compose.material3.TabRow import androidx.compose.runtime.Composable -import androidx.compose.runtime.LaunchedEffect -import androidx.compose.runtime.SideEffect -import androidx.compose.runtime.getValue -import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.rememberCoroutineScope -import androidx.compose.runtime.saveable.rememberSaveable -import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color -import androidx.compose.ui.platform.LocalConfiguration import com.android.settingslib.spa.framework.theme.SettingsDimension import kotlin.math.absoluteValue import kotlinx.coroutines.launch @@ -49,7 +41,7 @@ fun SettingsPager(titles: List<String>, content: @Composable (page: Int) -> Unit Column { val coroutineScope = rememberCoroutineScope() - val pagerState = rememberPageStateFixed() + val pagerState = rememberPagerState { titles.size } TabRow( selectedTabIndex = pagerState.currentPage, @@ -72,46 +64,8 @@ fun SettingsPager(titles: List<String>, content: @Composable (page: Int) -> Unit } } - HorizontalPager(pageCount = titles.size, state = pagerState) { page -> + HorizontalPager(state = pagerState) { page -> content(page) } } } - -/** - * Gets the state of [PagerState]. - * - * This is a work around. - * - * TODO: Remove this and replace with rememberPageState() after the Compose Foundation 1.5.0-alpha04 - * updated in the platform. - */ -@Composable -@OptIn(ExperimentalFoundationApi::class) -private fun rememberPageStateFixed(): PagerState { - var currentPage by rememberSaveable { mutableStateOf(0) } - var targetPage by rememberSaveable { mutableStateOf(-1) } - val pagerState = rememberPagerState() - val configuration = LocalConfiguration.current - var lastScreenWidthDp by rememberSaveable { mutableStateOf(-1) } - val screenWidthDp = configuration.screenWidthDp - LaunchedEffect(screenWidthDp) { - // Reset pager state to fix an issue after configuration change. - // When we declare android:configChanges in the manifest, the pager state is in a weird - // state after configuration change. - targetPage = currentPage - lastScreenWidthDp = screenWidthDp - } - LaunchedEffect(targetPage) { - if (targetPage != -1) { - pagerState.scrollToPage(targetPage) - targetPage = -1 - } - } - SideEffect { - if (lastScreenWidthDp == screenWidthDp) { - currentPage = pagerState.currentPage - } - } - return pagerState -} |