mirror of
https://github.com/null2264/yokai.git
synced 2025-06-21 10:44:42 +00:00
enhance(Compose): Allow appBar to scroll only when content doesn't fit
This commit is contained in:
parent
27dbedfcd6
commit
4568e03f5a
2 changed files with 13 additions and 4 deletions
|
@ -3,8 +3,11 @@ package dev.yokai.presentation.extension.repo
|
||||||
import androidx.compose.foundation.layout.Arrangement
|
import androidx.compose.foundation.layout.Arrangement
|
||||||
import androidx.compose.foundation.layout.padding
|
import androidx.compose.foundation.layout.padding
|
||||||
import androidx.compose.foundation.lazy.LazyColumn
|
import androidx.compose.foundation.lazy.LazyColumn
|
||||||
|
import androidx.compose.foundation.lazy.rememberLazyListState
|
||||||
import androidx.compose.material.icons.Icons
|
import androidx.compose.material.icons.Icons
|
||||||
import androidx.compose.material.icons.filled.ExtensionOff
|
import androidx.compose.material.icons.filled.ExtensionOff
|
||||||
|
import androidx.compose.material3.TopAppBarDefaults
|
||||||
|
import androidx.compose.material3.rememberTopAppBarState
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.LaunchedEffect
|
import androidx.compose.runtime.LaunchedEffect
|
||||||
import androidx.compose.runtime.collectAsState
|
import androidx.compose.runtime.collectAsState
|
||||||
|
@ -32,11 +35,16 @@ fun ExtensionRepoScreen(
|
||||||
val context = LocalContext.current
|
val context = LocalContext.current
|
||||||
val repoState = viewModel.repoState.collectAsState()
|
val repoState = viewModel.repoState.collectAsState()
|
||||||
var inputText by remember { mutableStateOf("") }
|
var inputText by remember { mutableStateOf("") }
|
||||||
|
val listState = rememberLazyListState()
|
||||||
|
|
||||||
YokaiScaffold(
|
YokaiScaffold(
|
||||||
onNavigationIconClicked = onBackPress,
|
onNavigationIconClicked = onBackPress,
|
||||||
title = title,
|
title = title,
|
||||||
appBarType = AppBarType.SMALL,
|
appBarType = AppBarType.SMALL,
|
||||||
|
scrollBehavior = TopAppBarDefaults.enterAlwaysScrollBehavior(
|
||||||
|
state = rememberTopAppBarState(),
|
||||||
|
canScroll = { listState.firstVisibleItemIndex > 0 || listState.firstVisibleItemScrollOffset > 0 },
|
||||||
|
),
|
||||||
) { innerPadding ->
|
) { innerPadding ->
|
||||||
if (repoState.value is ExtensionRepoState.Loading) return@YokaiScaffold
|
if (repoState.value is ExtensionRepoState.Loading) return@YokaiScaffold
|
||||||
|
|
||||||
|
@ -46,6 +54,7 @@ fun ExtensionRepoScreen(
|
||||||
modifier = Modifier.padding(innerPadding),
|
modifier = Modifier.padding(innerPadding),
|
||||||
userScrollEnabled = true,
|
userScrollEnabled = true,
|
||||||
verticalArrangement = Arrangement.Top,
|
verticalArrangement = Arrangement.Top,
|
||||||
|
state = listState,
|
||||||
) {
|
) {
|
||||||
item {
|
item {
|
||||||
ExtensionRepoItem(
|
ExtensionRepoItem(
|
||||||
|
|
|
@ -38,11 +38,11 @@ class ExtensionRepoViewModel :
|
||||||
fun addRepo(url: String) {
|
fun addRepo(url: String) {
|
||||||
viewModelScope.launchIO {
|
viewModelScope.launchIO {
|
||||||
val result = repository.addRepo(url)
|
val result = repository.addRepo(url)
|
||||||
if (result is Result.Error) {
|
when (result) {
|
||||||
internalEvent.value = ExtensionRepoEvent.InvalidUrl
|
is Result.Error -> internalEvent.value = ExtensionRepoEvent.InvalidUrl
|
||||||
return@launchIO
|
is Result.Success -> internalEvent.value = ExtensionRepoEvent.Success
|
||||||
|
else -> internalEvent.value = ExtensionRepoEvent.NoOp
|
||||||
}
|
}
|
||||||
internalEvent.value = ExtensionRepoEvent.Success
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue