@@ -52,31 +52,37 @@ class PagerViewViewManager : ViewGroupManager<ViewPager2>() {
5252 // https://github.com/callstack/react-native-viewpager/issues/183
5353 vp.isSaveEnabled = false
5454 eventDispatcher = reactContext.getNativeModule(UIManagerModule ::class .java)!! .eventDispatcher
55- vp.registerOnPageChangeCallback(object : OnPageChangeCallback () {
56- override fun onPageScrolled (position : Int , positionOffset : Float , positionOffsetPixels : Int ) {
57- super .onPageScrolled(position, positionOffset, positionOffsetPixels)
58- eventDispatcher.dispatchEvent(
59- PageScrollEvent (vp.id, position, positionOffset))
60- }
6155
62- override fun onPageSelected (position : Int ) {
63- super .onPageSelected(position)
64- eventDispatcher.dispatchEvent(
65- PageSelectedEvent (vp.id, position))
66- }
56+ vp.post {
57+ vp.registerOnPageChangeCallback(object : OnPageChangeCallback () {
58+ override fun onPageScrolled (position : Int , positionOffset : Float , positionOffsetPixels : Int ) {
59+ super .onPageScrolled(position, positionOffset, positionOffsetPixels)
60+ eventDispatcher.dispatchEvent(
61+ PageScrollEvent (vp.id, position, positionOffset))
62+ }
6763
68- override fun onPageScrollStateChanged (state : Int ) {
69- super .onPageScrollStateChanged(state)
70- val pageScrollState: String = when (state) {
71- ViewPager2 .SCROLL_STATE_IDLE -> " idle"
72- ViewPager2 .SCROLL_STATE_DRAGGING -> " dragging"
73- ViewPager2 .SCROLL_STATE_SETTLING -> " settling"
74- else -> throw IllegalStateException (" Unsupported pageScrollState" )
64+ override fun onPageSelected (position : Int ) {
65+ super .onPageSelected(position)
66+ eventDispatcher.dispatchEvent(
67+ PageSelectedEvent (vp.id, position))
7568 }
76- eventDispatcher.dispatchEvent(
77- PageScrollStateChangedEvent (vp.id, pageScrollState))
78- }
79- })
69+
70+ override fun onPageScrollStateChanged (state : Int ) {
71+ super .onPageScrollStateChanged(state)
72+ val pageScrollState: String = when (state) {
73+ ViewPager2 .SCROLL_STATE_IDLE -> " idle"
74+ ViewPager2 .SCROLL_STATE_DRAGGING -> " dragging"
75+ ViewPager2 .SCROLL_STATE_SETTLING -> " settling"
76+ else -> throw IllegalStateException (" Unsupported pageScrollState" )
77+ }
78+ eventDispatcher.dispatchEvent(
79+ PageScrollStateChangedEvent (vp.id, pageScrollState))
80+ }
81+ })
82+
83+ eventDispatcher.dispatchEvent(PageSelectedEvent (vp.id, vp.currentItem))
84+ }
85+
8086 return vp
8187 }
8288
@@ -139,6 +145,13 @@ class PagerViewViewManager : ViewGroupManager<ViewPager2>() {
139145 viewPager.isUserInputEnabled = value
140146 }
141147
148+ @ReactProp(name = " initialPage" , defaultInt = 0 )
149+ fun setInitialPage (viewPager : ViewPager2 , value : Int ) {
150+ viewPager.post {
151+ setCurrentItem(viewPager, value, false )
152+ }
153+ }
154+
142155 @ReactProp(name = " orientation" )
143156 fun setOrientation (viewPager : ViewPager2 , value : String ) {
144157 viewPager.orientation = if (value == " vertical" ) ViewPager2 .ORIENTATION_VERTICAL else ViewPager2 .ORIENTATION_HORIZONTAL
0 commit comments