Skip to content

Commit 9175686

Browse files
committed
Scrollbar as LinearProgressIndicator
1 parent a820bb6 commit 9175686

3 files changed

Lines changed: 22 additions & 6 deletions

File tree

sample/src/commonMain/kotlin/com/softartdev/shared/AppState.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,9 @@ object AppState {
2020
val textState: MutableState<String> = mutableStateOf(readMe)
2121
val scrollState: ScrollState = ScrollState(initial = 0)
2222

23+
val scrollProgress: Float
24+
get() = scrollState.value.toFloat() / scrollState.maxValue.toFloat()
25+
2326
val secondaryText: String
2427
@Composable get() = stringResource(
2528
resource = when (showMaterial3.value) {

sample/src/commonMain/kotlin/com/softartdev/shared/material/NoteDetailBody.kt

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import androidx.compose.material.icons.filled.Style
2020
import androidx.compose.runtime.Composable
2121
import androidx.compose.runtime.MutableState
2222
import androidx.compose.runtime.remember
23+
import androidx.compose.runtime.saveable.rememberSaveable
2324
import androidx.compose.ui.Alignment
2425
import androidx.compose.ui.Modifier
2526
import androidx.compose.ui.unit.dp
@@ -33,8 +34,10 @@ import kotlin.native.HiddenFromObjC
3334
fun NoteDetailBody(
3435
textState: MutableState<String> = remember(AppState::textState),
3536
onBackClick: () -> Unit = {},
36-
showLoading: Boolean = true,
37-
scrollState: ScrollState = remember(AppState::scrollState),
37+
scrollState: ScrollState = rememberSaveable(
38+
saver = ScrollState.Saver,
39+
init = AppState::scrollState
40+
),
3841
) = Scaffold(
3942
topBar = {
4043
TopAppBar(
@@ -51,7 +54,10 @@ fun NoteDetailBody(
5154
)
5255
}) {
5356
Column(horizontalAlignment = Alignment.CenterHorizontally) {
54-
if (showLoading) LinearProgressIndicator(modifier = Modifier.fillMaxWidth())
57+
LinearProgressIndicator(
58+
modifier = Modifier.fillMaxWidth(),
59+
progress = AppState.scrollProgress,
60+
)
5561
TextField(
5662
modifier = Modifier
5763
.weight(1F)

sample/src/commonMain/kotlin/com/softartdev/shared/material3/NoteDetailBody.kt

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import androidx.compose.material3.TopAppBar
2323
import androidx.compose.runtime.Composable
2424
import androidx.compose.runtime.MutableState
2525
import androidx.compose.runtime.remember
26+
import androidx.compose.runtime.saveable.rememberSaveable
2627
import androidx.compose.ui.Alignment
2728
import androidx.compose.ui.Modifier
2829
import androidx.compose.ui.unit.dp
@@ -36,8 +37,10 @@ import kotlin.native.HiddenFromObjC
3637
fun NoteDetailBody(
3738
textState: MutableState<String> = remember(AppState::textState),
3839
onBackClick: () -> Unit = {},
39-
showLoading: Boolean = true,
40-
scrollState: ScrollState = remember(AppState::scrollState),
40+
scrollState: ScrollState = rememberSaveable(
41+
saver = ScrollState.Saver,
42+
init = AppState::scrollState
43+
),
4144
) = Scaffold(
4245
topBar = {
4346
TopAppBar(
@@ -57,7 +60,11 @@ fun NoteDetailBody(
5760
modifier = Modifier.padding(paddingValues),
5861
horizontalAlignment = Alignment.CenterHorizontally
5962
) {
60-
if (showLoading) LinearProgressIndicator(modifier = Modifier.fillMaxWidth())
63+
LinearProgressIndicator(
64+
modifier = Modifier.fillMaxWidth(),
65+
progress = AppState::scrollProgress,
66+
drawStopIndicator = {},
67+
)
6168
TextField(
6269
modifier = Modifier
6370
.weight(1F)

0 commit comments

Comments
 (0)