mirror of
https://github.com/msfjarvis/compose-lobsters
synced 2025-08-14 22:17:03 +05:30
android: properly handle insets and padding
This commit is contained in:
parent
6bbd236203
commit
1683c5c027
4 changed files with 34 additions and 24 deletions
|
@ -3,6 +3,7 @@ package dev.msfjarvis.claw.android
|
|||
import android.os.Bundle
|
||||
import androidx.activity.ComponentActivity
|
||||
import androidx.activity.compose.setContent
|
||||
import androidx.core.view.WindowCompat
|
||||
import androidx.paging.Pager
|
||||
import androidx.paging.PagingConfig
|
||||
import dagger.hilt.android.AndroidEntryPoint
|
||||
|
@ -20,6 +21,7 @@ class MainActivity : ComponentActivity() {
|
|||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
WindowCompat.setDecorFitsSystemWindows(window, false)
|
||||
val pager = Pager(PagingConfig(20)) { LobstersPagingSource(api::getHottestPosts) }
|
||||
setContent {
|
||||
LobstersApp(
|
||||
|
|
|
@ -18,6 +18,8 @@ import androidx.compose.ui.unit.dp
|
|||
import androidx.paging.LoadState
|
||||
import androidx.paging.Pager
|
||||
import androidx.paging.compose.collectAsLazyPagingItems
|
||||
import com.google.accompanist.insets.ProvideWindowInsets
|
||||
import com.google.accompanist.insets.statusBarsPadding
|
||||
import com.google.accompanist.systemuicontroller.rememberSystemUiController
|
||||
import dev.msfjarvis.claw.api.model.LobstersPost
|
||||
import dev.msfjarvis.claw.common.theme.LobstersTheme
|
||||
|
@ -31,32 +33,34 @@ fun LobstersApp(
|
|||
val systemUiController = rememberSystemUiController()
|
||||
val scaffoldState = rememberScaffoldState()
|
||||
LobstersTheme(darkTheme = isSystemInDarkTheme()) {
|
||||
val useDarkIcons = MaterialTheme.colors.isLight
|
||||
val systemBarsColor = MaterialTheme.colors.primarySurface
|
||||
ProvideWindowInsets {
|
||||
val useDarkIcons = MaterialTheme.colors.isLight
|
||||
val systemBarsColor = MaterialTheme.colors.primarySurface
|
||||
|
||||
SideEffect {
|
||||
systemUiController.setSystemBarsColor(color = systemBarsColor, darkIcons = useDarkIcons)
|
||||
}
|
||||
val items = pager.flow.collectAsLazyPagingItems()
|
||||
Scaffold(
|
||||
scaffoldState = scaffoldState,
|
||||
topBar = { ClawAppBar() },
|
||||
modifier = Modifier,
|
||||
) { padding ->
|
||||
if (items.loadState.refresh != LoadState.Loading) {
|
||||
NetworkPosts(
|
||||
items = items,
|
||||
urlLauncher = urlLauncher,
|
||||
modifier = Modifier.padding(padding),
|
||||
)
|
||||
} else {
|
||||
Box(
|
||||
modifier = Modifier.fillMaxSize(),
|
||||
) {
|
||||
CircularProgressIndicator(
|
||||
modifier = Modifier.size(64.dp).align(Alignment.Center),
|
||||
color = MaterialTheme.colors.secondary,
|
||||
SideEffect {
|
||||
systemUiController.setSystemBarsColor(color = systemBarsColor, darkIcons = useDarkIcons)
|
||||
}
|
||||
val items = pager.flow.collectAsLazyPagingItems()
|
||||
Scaffold(
|
||||
scaffoldState = scaffoldState,
|
||||
topBar = { ClawAppBar(modifier = Modifier.statusBarsPadding()) },
|
||||
modifier = Modifier,
|
||||
) {
|
||||
if (items.loadState.refresh != LoadState.Loading) {
|
||||
NetworkPosts(
|
||||
items = items,
|
||||
urlLauncher = urlLauncher,
|
||||
modifier = Modifier.padding(top = 16.dp),
|
||||
)
|
||||
} else {
|
||||
Box(
|
||||
modifier = Modifier.fillMaxSize(),
|
||||
) {
|
||||
CircularProgressIndicator(
|
||||
modifier = Modifier.size(64.dp).align(Alignment.Center),
|
||||
color = MaterialTheme.colors.secondary,
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue