Make Menu composable @Stable
This commit is contained in:
@@ -58,7 +58,6 @@ import it.vfsfitvnm.vimusic.service.PlayerService
|
|||||||
import it.vfsfitvnm.vimusic.ui.components.BottomSheetMenu
|
import it.vfsfitvnm.vimusic.ui.components.BottomSheetMenu
|
||||||
import it.vfsfitvnm.vimusic.ui.components.LocalMenuState
|
import it.vfsfitvnm.vimusic.ui.components.LocalMenuState
|
||||||
import it.vfsfitvnm.vimusic.ui.components.rememberBottomSheetState
|
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.HomeScreen
|
||||||
import it.vfsfitvnm.vimusic.ui.screens.IntentUriScreen
|
import it.vfsfitvnm.vimusic.ui.screens.IntentUriScreen
|
||||||
import it.vfsfitvnm.vimusic.ui.styling.Appearance
|
import it.vfsfitvnm.vimusic.ui.styling.Appearance
|
||||||
@@ -311,7 +310,6 @@ class MainActivity : ComponentActivity() {
|
|||||||
LocalRippleTheme provides rippleTheme,
|
LocalRippleTheme provides rippleTheme,
|
||||||
LocalShimmerTheme provides shimmerTheme,
|
LocalShimmerTheme provides shimmerTheme,
|
||||||
LocalPlayerServiceBinder provides binder,
|
LocalPlayerServiceBinder provides binder,
|
||||||
LocalMenuState provides rememberMenuState(),
|
|
||||||
LocalPlayerAwarePaddingValues provides playerAwarePaddingValues
|
LocalPlayerAwarePaddingValues provides playerAwarePaddingValues
|
||||||
) {
|
) {
|
||||||
when (val uri = uri) {
|
when (val uri = uri) {
|
||||||
|
|||||||
@@ -11,23 +11,24 @@ import androidx.compose.foundation.gestures.detectTapGestures
|
|||||||
import androidx.compose.foundation.layout.Spacer
|
import androidx.compose.foundation.layout.Spacer
|
||||||
import androidx.compose.foundation.layout.fillMaxSize
|
import androidx.compose.foundation.layout.fillMaxSize
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.MutableState
|
import androidx.compose.runtime.Stable
|
||||||
import androidx.compose.runtime.compositionLocalOf
|
|
||||||
import androidx.compose.runtime.getValue
|
import androidx.compose.runtime.getValue
|
||||||
import androidx.compose.runtime.mutableStateOf
|
import androidx.compose.runtime.mutableStateOf
|
||||||
import androidx.compose.runtime.remember
|
|
||||||
import androidx.compose.runtime.setValue
|
import androidx.compose.runtime.setValue
|
||||||
|
import androidx.compose.runtime.staticCompositionLocalOf
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
import androidx.compose.ui.graphics.Color
|
import androidx.compose.ui.graphics.Color
|
||||||
import androidx.compose.ui.input.pointer.pointerInput
|
import androidx.compose.ui.input.pointer.pointerInput
|
||||||
|
|
||||||
val LocalMenuState = compositionLocalOf<MenuState> { TODO() }
|
val LocalMenuState = staticCompositionLocalOf { MenuState() }
|
||||||
|
|
||||||
class MenuState(isDisplayedState: MutableState<Boolean>) {
|
@Stable
|
||||||
var isDisplayed by isDisplayedState
|
class MenuState {
|
||||||
|
var isDisplayed by mutableStateOf(false)
|
||||||
private set
|
private set
|
||||||
|
|
||||||
var content: @Composable () -> Unit = {}
|
var content by mutableStateOf<@Composable () -> Unit>({})
|
||||||
|
private set
|
||||||
|
|
||||||
fun display(content: @Composable () -> Unit) {
|
fun display(content: @Composable () -> Unit) {
|
||||||
this.content = content
|
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
|
@Composable
|
||||||
fun BottomSheetMenu(
|
fun BottomSheetMenu(
|
||||||
state: MenuState,
|
state: MenuState,
|
||||||
|
|||||||
Reference in New Issue
Block a user