Skip to content

Commit eaecb7a

Browse files
committed
Add fast scroll
1 parent 99775a1 commit eaecb7a

1 file changed

Lines changed: 27 additions & 11 deletions

File tree

  • composeApp/src/commonMain/kotlin/com/linuxcommandlibrary/app/ui/screens/commandlist

composeApp/src/commonMain/kotlin/com/linuxcommandlibrary/app/ui/screens/commandlist/CommandListScreen.kt

Lines changed: 27 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,11 @@ package com.linuxcommandlibrary.app.ui.screens.commandlist
44

55
import androidx.compose.foundation.background
66
import androidx.compose.foundation.clickable
7+
import androidx.compose.foundation.layout.Box
78
import androidx.compose.foundation.layout.fillMaxSize
89
import androidx.compose.foundation.lazy.LazyColumn
910
import androidx.compose.foundation.lazy.items
11+
import androidx.compose.foundation.lazy.rememberLazyListState
1012
import androidx.compose.material.ExperimentalMaterialApi
1113
import androidx.compose.material.Icon
1214
import androidx.compose.material.ListItem
@@ -15,11 +17,13 @@ import androidx.compose.runtime.Composable
1517
import androidx.compose.runtime.collectAsState
1618
import androidx.compose.runtime.getValue
1719
import androidx.compose.runtime.remember
20+
import androidx.compose.ui.Alignment
1821
import androidx.compose.ui.Modifier
1922
import androidx.compose.ui.input.pointer.PointerIcon
2023
import androidx.compose.ui.input.pointer.pointerHoverIcon
2124
import com.linuxcommandlibrary.app.data.CommandInfo
2225
import com.linuxcommandlibrary.app.ui.composables.AppIcon
26+
import com.linuxcommandlibrary.app.ui.composables.FastScrollBar
2327
import com.linuxcommandlibrary.app.ui.composables.HighlightedText
2428
import com.linuxcommandlibrary.app.ui.composables.rememberIconPainter
2529
import com.linuxcommandlibrary.app.ui.theme.LocalCustomColors
@@ -31,23 +35,35 @@ fun CommandListScreen(
3135
) {
3236
val commands by viewModel.commands.collectAsState()
3337
val bookmarkedNames by viewModel.bookmarkedNames.collectAsState()
38+
val listState = rememberLazyListState()
3439

35-
LazyColumn(
40+
Box(
3641
modifier = Modifier
3742
.background(MaterialTheme.colors.background)
3843
.fillMaxSize(),
3944
) {
40-
items(
41-
items = commands,
42-
key = { it.id },
43-
contentType = { "command_list_item" },
44-
) { command ->
45-
CommandListItem(
46-
command = command,
47-
onNavigate = onNavigate,
48-
isBookmarked = command.name in bookmarkedNames,
49-
)
45+
LazyColumn(
46+
state = listState,
47+
modifier = Modifier.fillMaxSize(),
48+
) {
49+
items(
50+
items = commands,
51+
key = { it.id },
52+
contentType = { "command_list_item" },
53+
) { command ->
54+
CommandListItem(
55+
command = command,
56+
onNavigate = onNavigate,
57+
isBookmarked = command.name in bookmarkedNames,
58+
)
59+
}
5060
}
61+
62+
FastScrollBar(
63+
listState = listState,
64+
itemCount = commands.size,
65+
modifier = Modifier.align(Alignment.CenterEnd),
66+
)
5167
}
5268
}
5369

0 commit comments

Comments
 (0)