From 82ebda51b6ecca93607ea4f759cf8b4cfe149e30 Mon Sep 17 00:00:00 2001 From: vfsfitvnm Date: Fri, 26 Aug 2022 10:56:22 +0200 Subject: [PATCH] Make Menu composable @Stable --- .../it/vfsfitvnm/vimusic/MainActivity.kt | 2 -- .../vfsfitvnm/vimusic/ui/components/Menu.kt | 28 ++++++------------- 2 files changed, 8 insertions(+), 22 deletions(-) diff --git a/app/src/main/kotlin/it/vfsfitvnm/vimusic/MainActivity.kt b/app/src/main/kotlin/it/vfsfitvnm/vimusic/MainActivity.kt index 3004afd..24e168d 100644 --- a/app/src/main/kotlin/it/vfsfitvnm/vimusic/MainActivity.kt +++ b/app/src/main/kotlin/it/vfsfitvnm/vimusic/MainActivity.kt @@ -58,7 +58,6 @@ import it.vfsfitvnm.vimusic.service.PlayerService import it.vfsfitvnm.vimusic.ui.components.BottomSheetMenu import it.vfsfitvnm.vimusic.ui.components.LocalMenuState import it.vfsfitvnm.vimusic.ui.components.rememberBottomSheetState -import it.vfsfitvnm.vimusic.ui.components.rememberMenuState import it.vfsfitvnm.vimusic.ui.screens.HomeScreen import it.vfsfitvnm.vimusic.ui.screens.IntentUriScreen import it.vfsfitvnm.vimusic.ui.styling.Appearance @@ -311,7 +310,6 @@ class MainActivity : ComponentActivity() { LocalRippleTheme provides rippleTheme, LocalShimmerTheme provides shimmerTheme, LocalPlayerServiceBinder provides binder, - LocalMenuState provides rememberMenuState(), LocalPlayerAwarePaddingValues provides playerAwarePaddingValues ) { when (val uri = uri) { diff --git a/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/components/Menu.kt b/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/components/Menu.kt index 6ccd848..87e6ecb 100644 --- a/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/components/Menu.kt +++ b/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/components/Menu.kt @@ -11,23 +11,24 @@ import androidx.compose.foundation.gestures.detectTapGestures import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.runtime.Composable -import androidx.compose.runtime.MutableState -import androidx.compose.runtime.compositionLocalOf +import androidx.compose.runtime.Stable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf -import androidx.compose.runtime.remember import androidx.compose.runtime.setValue +import androidx.compose.runtime.staticCompositionLocalOf import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.input.pointer.pointerInput -val LocalMenuState = compositionLocalOf { TODO() } +val LocalMenuState = staticCompositionLocalOf { MenuState() } -class MenuState(isDisplayedState: MutableState) { - var isDisplayed by isDisplayedState +@Stable +class MenuState { + var isDisplayed by mutableStateOf(false) private set - var content: @Composable () -> Unit = {} + var content by mutableStateOf<@Composable () -> Unit>({}) + private set fun display(content: @Composable () -> Unit) { this.content = content @@ -39,19 +40,6 @@ class MenuState(isDisplayedState: MutableState) { } } -@Composable -fun rememberMenuState(): MenuState { - val isDisplayedState = remember { - mutableStateOf(false) - } - - return remember { - MenuState( - isDisplayedState = isDisplayedState - ) - } -} - @Composable fun BottomSheetMenu( state: MenuState,