Make Menu composable @Stable

This commit is contained in:
vfsfitvnm
2022-08-26 10:56:22 +02:00
parent 305d6c80c5
commit 82ebda51b6
2 changed files with 8 additions and 22 deletions

View File

@@ -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) {

View File

@@ -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<MenuState> { TODO() }
val LocalMenuState = staticCompositionLocalOf { MenuState() }
class MenuState(isDisplayedState: MutableState<Boolean>) {
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<Boolean>) {
}
}
@Composable
fun rememberMenuState(): MenuState {
val isDisplayedState = remember {
mutableStateOf(false)
}
return remember {
MenuState(
isDisplayedState = isDisplayedState
)
}
}
@Composable
fun BottomSheetMenu(
state: MenuState,