fix(android): place shell banners below the status bar
ShellScaffold's banner column did not consume the status-bar inset while each screen's app bar did, so the update/connection banners drew under the status bar. Consume the inset once at the shell (statusBarsPadding) so banners sit below it; descendant screen app bars see the consumed inset and stop re-padding, matching Flutter's SafeArea(bottom:false). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -4,6 +4,7 @@ import androidx.compose.foundation.layout.Box
|
|||||||
import androidx.compose.foundation.layout.Column
|
import androidx.compose.foundation.layout.Column
|
||||||
import androidx.compose.foundation.layout.fillMaxSize
|
import androidx.compose.foundation.layout.fillMaxSize
|
||||||
import androidx.compose.foundation.layout.fillMaxWidth
|
import androidx.compose.foundation.layout.fillMaxWidth
|
||||||
|
import androidx.compose.foundation.layout.statusBarsPadding
|
||||||
import androidx.compose.material3.SnackbarHost
|
import androidx.compose.material3.SnackbarHost
|
||||||
import androidx.compose.material3.SnackbarHostState
|
import androidx.compose.material3.SnackbarHostState
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
@@ -61,7 +62,12 @@ fun ShellScaffold(
|
|||||||
snackbarHostState.showSnackbar(msg)
|
snackbarHostState.showSnackbar(msg)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Column(modifier = modifier.fillMaxSize()) {
|
// Consume the status-bar inset once here so the banner stack sits
|
||||||
|
// below the status bar (mirrors Flutter's SafeArea(bottom:false)).
|
||||||
|
// statusBarsPadding consumes the inset for descendants, so the in-
|
||||||
|
// shell screens' app bars no longer re-pad for the status bar —
|
||||||
|
// avoiding a double inset while fixing banners drawing under it.
|
||||||
|
Column(modifier = modifier.fillMaxSize().statusBarsPadding()) {
|
||||||
// Banner slot. VersionTooOldBanner appears when the server's
|
// Banner slot. VersionTooOldBanner appears when the server's
|
||||||
// min_client_version exceeds our build; UpdateBanner softly
|
// min_client_version exceeds our build; UpdateBanner softly
|
||||||
// nudges an available (newer-than-installed) APK; and
|
// nudges an available (newer-than-installed) APK; and
|
||||||
|
|||||||
Reference in New Issue
Block a user