@@ -52,31 +52,37 @@ class PagerViewViewManager : ViewGroupManager<ViewPager2>() {
52
52
// https://github.com/callstack/react-native-viewpager/issues/183
53
53
vp.isSaveEnabled = false
54
54
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
- }
61
55
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
+ }
67
63
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))
75
68
}
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
+
80
86
return vp
81
87
}
82
88
@@ -139,6 +145,13 @@ class PagerViewViewManager : ViewGroupManager<ViewPager2>() {
139
145
viewPager.isUserInputEnabled = value
140
146
}
141
147
148
+ @ReactProp(name = " initialPage" , defaultInt = 0 )
149
+ fun setInitialPage (viewPager : ViewPager2 , value : Int ) {
150
+ viewPager.post {
151
+ setCurrentItem(viewPager, value, false )
152
+ }
153
+ }
154
+
142
155
@ReactProp(name = " orientation" )
143
156
fun setOrientation (viewPager : ViewPager2 , value : String ) {
144
157
viewPager.orientation = if (value == " vertical" ) ViewPager2 .ORIENTATION_VERTICAL else ViewPager2 .ORIENTATION_HORIZONTAL
0 commit comments