Skip to content

Commit 5d1c341

Browse files
committed
library: Optimize PullToRefresh component
1 parent d87664d commit 5d1c341

File tree

3 files changed

+10
-15
lines changed

3 files changed

+10
-15
lines changed

composeApp/src/commonMain/kotlin/SecondPage.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ fun SecondPage(
3434
LaunchedEffect(pullToRefreshState.isRefreshing) {
3535
if (pullToRefreshState.isRefreshing) {
3636
isRefreshing = true
37-
delay(100)
37+
delay(300)
3838
pullToRefreshState.completeRefreshing {
3939
isRefreshing = false
4040
}

composeApp/src/commonMain/kotlin/component/OtherComponent.kt

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,7 @@ fun OtherComponent(padding: PaddingValues) {
4343
var text3 by remember { mutableStateOf("") }
4444
var progress by remember { mutableStateOf(0.5f) }
4545
val progressDisable by remember { mutableStateOf(0.5f) }
46-
val tabTexts =
47-
listOf("tab1", "tab2", "tab3", "tab4", "tab5", "tab6", "tab7", "tab8", "tab9", "tab10")
46+
val tabTexts = listOf("tab1", "tab2", "tab3", "tab4", "tab5", "tab6")
4847
var selectedTabIndex1 by remember { mutableStateOf(0) }
4948

5049
SmallTitle(text = "Button")
@@ -194,6 +193,4 @@ fun OtherComponent(padding: PaddingValues) {
194193
style = MiuixTheme.textStyles.paragraph
195194
)
196195
}
197-
198-
199196
}

miuix/src/commonMain/kotlin/top/yukonga/miuix/kmp/basic/PullToRefresh.kt

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -189,7 +189,7 @@ fun RefreshHeader(
189189
RefreshState.Pulling -> circleSize * pullProgress
190190
RefreshState.ThresholdReached -> circleSize + (dragOffset - thresholdOffset).toDp()
191191
RefreshState.Refreshing -> circleSize
192-
RefreshState.RefreshComplete -> circleSize
192+
RefreshState.RefreshComplete -> circleSize.coerceIn(0.dp, circleSize - circleSize * refreshCompleteAnimProgress)
193193
}.coerceAtMost(maxDrag.toDp())
194194
}
195195

@@ -198,14 +198,12 @@ fun RefreshHeader(
198198
horizontalAlignment = Alignment.CenterHorizontally
199199
) {
200200
RefreshContent(
201-
modifier = Modifier
202-
.height(headerHeight)
203-
.padding(top = 6.dp),
201+
modifier = Modifier.height(headerHeight),
204202
circleSize = circleSize
205203
) {
206-
val ringStrokeWidthPx = circleSize.toPx() / 10
204+
val ringStrokeWidthPx = circleSize.toPx() / 11
207205
val indicatorRadiusPx = size.minDimension / 2
208-
val center = Offset(size.width / 2, size.height / 2)
206+
val center = Offset(size.width / 2, size.height / 1.8f)
209207

210208
when (pullToRefreshState.refreshState) {
211209
RefreshState.Idle -> return@RefreshContent
@@ -251,15 +249,15 @@ fun RefreshHeader(
251249
}
252250

253251
AnimatedVisibility(
254-
visible = pullToRefreshState.refreshState != RefreshState.Idle
252+
visible = pullProgress >= 0.5f
253+
&& pullToRefreshState.refreshState != RefreshState.Idle
254+
&& pullToRefreshState.refreshState != RefreshState.RefreshComplete
255255
) {
256256
Text(
257257
text = refreshText,
258258
style = refreshTextStyle,
259259
color = color,
260-
modifier = Modifier
261-
.padding(top = 12.dp)
262-
.alpha(textAlpha)
260+
modifier = Modifier.alpha(textAlpha).padding(top = 6.dp)
263261
)
264262
}
265263
}

0 commit comments

Comments
 (0)