Fix rememberOverscrollEffect compat for legacy build

The legacy build (API 21) uses Compose BOM 2025.01.00 where
rememberOverscrollEffect() is internal and overscrollEffect
parameter doesn't exist on verticalScroll/LazyColumn.
This commit is contained in:
世界
2026-02-05 20:26:02 +08:00
parent eaff2af1e7
commit 02f9ec4d97
5 changed files with 131 additions and 10 deletions

View File

@@ -0,0 +1,56 @@
package io.nekohasekai.sfa.compat
import androidx.compose.foundation.ScrollState
import androidx.compose.foundation.gestures.FlingBehavior
import androidx.compose.foundation.gestures.ScrollableDefaults
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.LazyListScope
import androidx.compose.foundation.lazy.LazyListState
import androidx.compose.foundation.lazy.rememberLazyListState
import androidx.compose.foundation.verticalScroll
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
@Composable
fun rememberOverscrollEffectCompat(): Any? = null
@Suppress("UNUSED_PARAMETER")
@Composable
fun Modifier.verticalScrollCompat(
state: ScrollState,
enabled: Boolean = true,
flingBehavior: FlingBehavior? = null,
reverseScrolling: Boolean = false,
overscrollEffect: Any? = null,
): Modifier = this.verticalScroll(state, enabled, flingBehavior, reverseScrolling)
@Suppress("UNUSED_PARAMETER")
@Composable
fun LazyColumnCompat(
modifier: Modifier = Modifier,
state: LazyListState = rememberLazyListState(),
contentPadding: PaddingValues = PaddingValues(0.dp),
reverseLayout: Boolean = false,
verticalArrangement: Arrangement.Vertical = if (!reverseLayout) Arrangement.Top else Arrangement.Bottom,
horizontalAlignment: Alignment.Horizontal = Alignment.Start,
flingBehavior: FlingBehavior = ScrollableDefaults.flingBehavior(),
userScrollEnabled: Boolean = true,
overscrollEffect: Any? = null,
content: LazyListScope.() -> Unit,
) {
LazyColumn(
modifier = modifier,
state = state,
contentPadding = contentPadding,
reverseLayout = reverseLayout,
verticalArrangement = verticalArrangement,
horizontalAlignment = horizontalAlignment,
flingBehavior = flingBehavior,
userScrollEnabled = userScrollEnabled,
content = content,
)
}