React Native Picker for Android and IOS with dynamically updating selected items on scroll. Idea was taken at react-native-swipe-picker
yarn add react-native-dynamically-selected-picker react-native-linear-gradient
or
npm i react-native-dynamically-selected-picker react-native-linear-gradient --save
Then, if you didn't install react-native-linear-gradient
before: Enter command cd /ios
and pod install
. Now you can run project
import React, { useState } from 'react';
import { Dimensions, StyleSheet, Text, View } from 'react-native';
import DynamicallySelectedPicker from 'react-native-dynamically-selected-picker';
export default function App() {
const [selectedItemIndex, setSelectedItemIndex] = useState<number>(0);
const initialSelectedIndex = 1;
const windowWidth = Dimensions.get('window').width;
const height = 300;
return (
<View style={styles.container}>
<DynamicallySelectedPicker
items={[
{
value: 1,
label: 'Item 1',
},
{
value: 2,
label: 'Item 2',
},
{
value: 3,
label: 'Item 3',
},
{
value: 4,
label: 'Item 4',
itemColor: 'blue',
},
{
value: 5,
label: 'Item 5',
},
]}
onScroll={({ index }) => setSelectedItemIndex(index)}
onMomentumScrollBegin={({ index }) => setSelectedItemIndex(index)}
onMomentumScrollEnd={({ index }) => setSelectedItemIndex(index)}
onScrollBeginDrag={({ index }) => setSelectedItemIndex(index)}
onScrollEndDrag={({ index }) => setSelectedItemIndex(index)}
initialSelectedIndex={initialSelectedIndex}
height={height}
width={windowWidth}
/>
<View style={styles.selectedItemWrapper}>
<Text>Selected item index {selectedItemIndex}</Text>
</View>
</View>
);
}
const styles = StyleSheet.create({
container: {
flex: 1,
alignItems: 'center',
justifyContent: 'center',
},
selectedItemWrapper: {
marginTop: 50
},
});
Prop | Default | Type | Description |
---|---|---|---|
items | [{value: 0, label: 'No items', itemColor: 'red'}] | Array<object> |
- |
onScroll | - | func |
Returns selected selected index |
onMomentumScrollBegin | - | func |
Returns selected selected index |
onMomentumScrollEnd | - | func |
Returns selected selected index |
onScrollBeginDrag | - | func |
Returns selected selected index |
onScrollEndDrag | - | func |
Returns selected selected index |
initialSelectedIndex | 0 | number |
Set index number of initial item. |
transparentItemRows | 3 | number |
Set number of items at top and bottom of selected index. |
width | 300 | number |
- |
height | 300 | number |
- |
horizontal | false | boolean |
If true then a Horizontal picker. |
allItemsColor | #000 | string |
- |
selectedItemBorderColor | '#cecece' | string |
- |
fontSize | - | number |
- |
fontFamily | 'Arial' | string |
- |
renderItem | - | func |
Custom render function for each item. Passed in PickerListItemProps See source for a working example. |
renderGradientOverlay | true | boolean |
Render gradient over outer items. |
topGradientColors | [...] | Array<string> |
See default value in source. |
bottomGradientColors | [...] | Array<string> |
See default value in source. |