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) @OptIn(ExperimentalMaterial3Api::class)
@Composable @Composable
fun TopAppBarDefaults.collapsibleUntilExitScrollBehaviorWithLazyListState( fun TopAppBarDefaults.collapsibleUntilExitScrollBehaviorWithLazyListState(
listState: LazyListState? = null
): Pair<TopAppBarScrollBehavior, LazyListState> { ): Pair<TopAppBarScrollBehavior, LazyListState> {
val listState = rememberLazyListState() val lazyListState = listState ?: rememberLazyListState()
var canScroll by remember { mutableStateOf(false) } var canScroll by remember { mutableStateOf(false) }
val scrollBehavior = exitUntilCollapsedScrollBehavior( val scrollBehavior = exitUntilCollapsedScrollBehavior(
canScroll = { 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>, state: State<LicensesState>,
onNavigate: OnNavigate onNavigate: OnNavigate
) { ) {
val scrollState = TopAppBarDefaults.collapsibleUntilExitScrollBehaviorWithLazyListState() val scrollState = TopAppBarDefaults.collapsibleUntilExitScrollBehaviorWithLazyListState(
state.value.listState
)
Scaffold( Scaffold(
Modifier Modifier

View file

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