diff --git a/navi-uitron/src/main/java/com/navi/uitron/model/ui/PagerProperty.kt b/navi-uitron/src/main/java/com/navi/uitron/model/ui/PagerProperty.kt index 15cf229..5b4eb3c 100644 --- a/navi-uitron/src/main/java/com/navi/uitron/model/ui/PagerProperty.kt +++ b/navi-uitron/src/main/java/com/navi/uitron/model/ui/PagerProperty.kt @@ -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( diff --git a/navi-uitron/src/main/java/com/navi/uitron/render/PagerRenderer.kt b/navi-uitron/src/main/java/com/navi/uitron/render/PagerRenderer.kt index 15a5893..8adf6ee 100644 --- a/navi-uitron/src/main/java/com/navi/uitron/render/PagerRenderer.kt +++ b/navi-uitron/src/main/java/com/navi/uitron/render/PagerRenderer.kt @@ -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) } } diff --git a/navi-uitron/src/main/java/com/navi/uitron/utils/Constants.kt b/navi-uitron/src/main/java/com/navi/uitron/utils/Constants.kt index 2cefdbb..84c03fe 100644 --- a/navi-uitron/src/main/java/com/navi/uitron/utils/Constants.kt +++ b/navi-uitron/src/main/java/com/navi/uitron/utils/Constants.kt @@ -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"