TP-52730 add reset of pager state support in uitron (#281)

This commit is contained in:
Hitesh Kumar
2023-12-29 17:46:46 +05:30
committed by GitHub
parent 5f6aa6ee2a
commit d5839c44f2
3 changed files with 14 additions and 1 deletions

View File

@@ -10,7 +10,8 @@ data class PagerProperty(
var contentPadding: ComposePadding? = null,
var pagerStateKey: String? = null,
var spacingStyle: SpacingStyle? = null,
var minFlingDistance: Int? = null
var minFlingDistance: Int? = null,
var initialPagerPosition: Int? = null
) : BaseProperty() {
companion object {
@@ -32,6 +33,7 @@ data class PagerProperty(
pagerProperty?.pagerStateKey?.let { pagerStateKey = it }
pagerProperty?.spacingStyle?.let { spacingStyle = it }
pagerProperty?.minFlingDistance?.let { minFlingDistance = it }
pagerProperty?.initialPagerPosition?.let { initialPagerPosition = it }
}
data class SpacingStyle(

View File

@@ -31,6 +31,7 @@ import com.navi.uitron.model.data.UiTronData
import com.navi.uitron.model.ui.ComposePadding
import com.navi.uitron.model.ui.PagerProperty
import com.navi.uitron.model.ui.UiTronView
import com.navi.uitron.utils.CLEAR_SCROLL_PAGER_STATE
import com.navi.uitron.viewmodel.UiTronViewModel
import customClickable
import customCombinedClick
@@ -199,6 +200,15 @@ class PagerRenderer(
}
}
}
LaunchedEffect(property.initialPagerPosition) {
property.initialPagerPosition?.let { position ->
if (position != -1 && position < childrenComposeViews.size) {
pagerState.scrollToPage(position)
property.initialPagerPosition = -1
uiTronViewModel.handle[property.getPropertyId()] = CLEAR_SCROLL_PAGER_STATE
}
}
}
ObservePageChange(pagerState, property, uiTronViewModel, pagerData)
}
}

View File

@@ -8,6 +8,7 @@ const val PACKAGE_COLON = "package:"
const val STOP = "stop"
const val DISABLE_RESTART_TIMER = "disableRestartTimer"
const val REMOVE_FOCUS = "removeFocus"
const val CLEAR_SCROLL_PAGER_STATE = "clearScrollPagerState"
const val KEY_MVEL_ACTION = "mvelAction"
const val KEY_UI_TRON_DATA = "uiTronData"