LicensesScreen: Saving list position.

This commit is contained in:
acclorite 2024-07-14 23:46:34 +03:00
parent 91dae4efca
commit 541aa257f4
3 changed files with 10 additions and 6 deletions

View file

@ -20,14 +20,14 @@ import kotlinx.coroutines.flow.collectLatest
@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun TopAppBarDefaults.collapsibleUntilExitScrollBehaviorWithLazyListState(
listState: LazyListState? = null
): Pair<TopAppBarScrollBehavior, LazyListState> {
val listState = rememberLazyListState()
val lazyListState = listState ?: rememberLazyListState()
var canScroll by remember { mutableStateOf(false) }
val scrollBehavior = exitUntilCollapsedScrollBehavior(
canScroll = {
listState.canScrollForward || canScroll
lazyListState.canScrollForward || canScroll
}
)
@ -39,7 +39,7 @@ fun TopAppBarDefaults.collapsibleUntilExitScrollBehaviorWithLazyListState(
}
}
return scrollBehavior to listState
return scrollBehavior to lazyListState
}

View file

@ -63,7 +63,9 @@ private fun LicensesScreen(
state: State<LicensesState>,
onNavigate: OnNavigate
) {
val scrollState = TopAppBarDefaults.collapsibleUntilExitScrollBehaviorWithLazyListState()
val scrollState = TopAppBarDefaults.collapsibleUntilExitScrollBehaviorWithLazyListState(
state.value.listState
)
Scaffold(
Modifier

View file

@ -1,9 +1,11 @@
package ua.acclorite.book_story.presentation.screens.about.nested.licenses.data
import androidx.compose.foundation.lazy.LazyListState
import androidx.compose.runtime.Immutable
import com.mikepenz.aboutlibraries.entity.Library
@Immutable
data class LicensesState(
val licenses: List<Library> = emptyList()
val licenses: List<Library> = emptyList(),
val listState: LazyListState = LazyListState()
)