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.padding
|
||||
import androidx.compose.foundation.lazy.LazyColumn
|
||||
import androidx.compose.foundation.lazy.rememberLazyListState
|
||||
import androidx.compose.material.icons.Icons
|
||||
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.LaunchedEffect
|
||||
import androidx.compose.runtime.collectAsState
|
||||
|
@ -32,11 +35,16 @@ fun ExtensionRepoScreen(
|
|||
val context = LocalContext.current
|
||||
val repoState = viewModel.repoState.collectAsState()
|
||||
var inputText by remember { mutableStateOf("") }
|
||||
val listState = rememberLazyListState()
|
||||
|
||||
YokaiScaffold(
|
||||
onNavigationIconClicked = onBackPress,
|
||||
title = title,
|
||||
appBarType = AppBarType.SMALL,
|
||||
scrollBehavior = TopAppBarDefaults.enterAlwaysScrollBehavior(
|
||||
state = rememberTopAppBarState(),
|
||||
canScroll = { listState.firstVisibleItemIndex > 0 || listState.firstVisibleItemScrollOffset > 0 },
|
||||
),
|
||||
) { innerPadding ->
|
||||
if (repoState.value is ExtensionRepoState.Loading) return@YokaiScaffold
|
||||
|
||||
|
@ -46,6 +54,7 @@ fun ExtensionRepoScreen(
|
|||
modifier = Modifier.padding(innerPadding),
|
||||
userScrollEnabled = true,
|
||||
verticalArrangement = Arrangement.Top,
|
||||
state = listState,
|
||||
) {
|
||||
item {
|
||||
ExtensionRepoItem(
|
||||
|
|
|
@ -38,11 +38,11 @@ class ExtensionRepoViewModel :
|
|||
fun addRepo(url: String) {
|
||||
viewModelScope.launchIO {
|
||||
val result = repository.addRepo(url)
|
||||
if (result is Result.Error) {
|
||||
internalEvent.value = ExtensionRepoEvent.InvalidUrl
|
||||
return@launchIO
|
||||
when (result) {
|
||||
is Result.Error -> internalEvent.value = ExtensionRepoEvent.InvalidUrl
|
||||
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