I was wondering how I would go about dragging/sliding left to reveal the timestamp on react native. I am using a flatlist in react-native and I have the timestamp data but I am unsure of how to render the timestamps on slight drag. Anyone have detailed ideas on how to do this. I have included images of current implementation and iMessage slide/drag. This feature is also on Instagram (ios version at least). I should add that I’m not trying to do a drag and drop feature more like just a solution review what is not currently in the view from a slide/drag
Question posted in React native
The official React Native documentation can be found here.
The official React Native documentation can be found here.
2
Answers
This is the eventual solution i came up with all credit from @Abe and reading the gesture-handler documentation referenced above. I
My flatlist renders elements like this now
The most common way to handle this is with a PanGestureHandler from react-native-gesture-handler and an Animated.View from react-native-reanimated.
Wrap your component in one, and make the View that you want to move into an Animated.View. (The component that the PanGestureHandler wraps also should be an Animated.View.) Create a shared value (from Reanimated) that represents the x offset of the component. Then create a handler method that responds to the drag gesture and changes the shared value. You may want to add some limits, like not scrolling past a certain offset in either direction. Then, use the shared value in an animated style (something like
left: offsetX,
) that you apply to your Animated.View.Since you’re using this inside a scrollable list, make sure to set the activeOffsetX prop to something like
[-5, 5]
. This means that if the user is only trying to scroll up and down, your gesture handler won’t steal that touch.The example in the gesture-handler docs should help.