diff --git a/android/app/src/main/kotlin/com/flagship/abox/manager/ui/shell/MainAppShell.kt b/android/app/src/main/kotlin/com/flagship/abox/manager/ui/shell/MainAppShell.kt index 6565ef0..6c2c8ce 100644 --- a/android/app/src/main/kotlin/com/flagship/abox/manager/ui/shell/MainAppShell.kt +++ b/android/app/src/main/kotlin/com/flagship/abox/manager/ui/shell/MainAppShell.kt @@ -6,7 +6,6 @@ import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.navigationBarsPadding import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.statusBarsPadding import androidx.compose.material3.ExperimentalMaterial3Api @@ -19,6 +18,7 @@ import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.saveable.rememberSaveable +import androidx.compose.runtime.saveable.rememberSaveableStateHolder import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier @@ -56,6 +56,7 @@ fun MainAppShell( ) { var activeTab by rememberSaveable { mutableStateOf(initialTab) } var showAccountSheet by remember { mutableStateOf(false) } + val tabStateHolder = rememberSaveableStateHolder() Scaffold( modifier = modifier.fillMaxSize(), @@ -77,9 +78,7 @@ fun MainAppShell( } }, bottomBar = { - ABoxNavigationBar( - modifier = Modifier.navigationBarsPadding(), - ) { + ABoxNavigationBar { MainTab.values().forEach { tab -> val isSelected = (tab == activeTab) ABoxNavigationBarItem( @@ -111,10 +110,12 @@ fun MainAppShell( targetState = activeTab, label = "MainTabCrossfade", ) { tab -> - when (tab) { - MainTab.DEVICES -> devicesSlot() - MainTab.SCENES -> scenesSlot() - MainTab.ACTIVITY -> activitySlot() + tabStateHolder.SaveableStateProvider(tab) { + when (tab) { + MainTab.DEVICES -> devicesSlot() + MainTab.SCENES -> scenesSlot() + MainTab.ACTIVITY -> activitySlot() + } } } }