meliorence / react-native-snap-carousel

Swiper/carousel component for React Native featuring previews, multiple layouts, parallax images, performant handling of huge numbers of items, and more. Compatible with Android & iOS.
BSD 3-Clause "New" or "Revised" License
10.37k stars 2.29k forks source link

firstItem not working on Android #472

Open schumannd opened 5 years ago

schumannd commented 5 years ago

Is this a bug report, a feature request, or a question?

bug report

Have you followed the required steps before opening a bug report?

Have you made sure that it wasn't a React Native bug?

yes

Is the bug specific to iOS or Android? Or can it be reproduced on both platforms?

Android

Is the bug reproductible in a production environment (not a debug one)?

yes

Environment

Environment: React: 16.0.0-beta.5 React native: 0.51 react-native-snap-carousel: 3.3.4

Target Platform: Android (6.0) iOS (11) -->

(Write your answer here.)

Expected Behavior

scroll to item number specified in firstItem

Actual Behavior

does not scroll

Reproducible Demo

  1. use firstItem on android.

This might be related to https://stackoverflow.com/questions/33208477/react-native-android-scrollview-scrollto-not-working

I fixed it when using scrollTo in my component in a hacky way by introducing a 200ms delay or so on android.

bd-arc commented 5 years ago

Can you please provide a Snack example in which the issue can be reproduced?

eoghanmccarthy commented 5 years ago

I am experiencing this too.

I have a list of 30 product pages. If item 0 - 5 is clicked to open as firstItem in the carousel it works as expected. However, clicking on any higher index in the list will result in index 5 always being the first visible item. Currently getting around it by using ScrollList on Android only.

bd-arc commented 5 years ago

@eoghanmccarthy I don't know if you're referring to the same issue. Yours is a well-known and unfortunate FlatList bug.

See #363 for more info. #250 seems like the only way to get rid of it...

dolevp commented 5 years ago

Is it possible that the problem exists only on RTL devices?

AshishCd commented 5 years ago

Hey @eoghanmccarthy please use useScrollView into your Carousel component, it will solve your problem.

<Carousel data={photos} renderItem={this._renderItem} sliderWidth={sliderWidth} itemWidth={itemWidth} firstItem={this.state.selectedIndex} contentContainerCustomStyle={styles.sliderContentContainer} layout={"default"} loop={true} onSnapToItem={slideIndex => this.setState({ selectedIndex: slideIndex }) } useScrollView />

radik commented 5 years ago

@AshishCd you saved my day. Thank you.

thekevinbrown commented 5 years ago

@AshishCd this causes performance problems. I think this issue can be closed in favour of #538 as that has a simple reproduction case for both Android and iOS.

ericvvc9 commented 5 years ago

@AshishCd Thank you

dohooo commented 3 years ago

Sorry, please allow me to advertise for my open source library! ~ I think this library react-native-reanimated-carousel will solve your problem. It is a high performance and very simple component, complete with React-Native reanimated 2