In Home screen, I have 3 FlatList and some other View's 'other data', So should I wrap it inside ScrollView that enables me to scroll to see other data and so on,
But when I Wrap the FlatList's with scrollView I got this warning
VirtualizedLists should never be nested inside plain ScrollViews with the same orientation - use another VirtualizedList-backed container instead.
So how can I solve this issue without making a header/footer component to FlatList?
Demo "Note: I don't get a warning in the expo and I don't use it, that's just an example to see live demo"
here code snippet
const HomeScreen = () => {
const renderServices = ({item, index}) => {
return (
<View style={styles.itemContainer}>
<View style={styles.serviceImgContainer}>
<Image
style={styles.serviceImg}
source={{
uri:
'https://cdn1.iconfinder.com/data/icons/appliance-1/100/dryer-03-512.png',
}}
/>
</View>
<Text>{item.name}</Text>
</View>
);
};
return (
<View style={styles.container}>
<ScrollView style={{flex: 1}}>
<View style={styles.headerContainer}>
<Text style={styles.headerText}>
Booking Now!
</Text>
<View style={styles.imgHeaderContainer} />
</View>
{/* Services */}
<View style={styles.servicesContainer}>
<View style={styles.servicesHeader}>
<Text style={styles.headerTitle}>Services</Text>
<TouchableOpacity>
<Text style={styles.headerTitle}>more</Text>
</TouchableOpacity>
</View>
<FlatList
scrollEnabled={false}
data={[
{id: 0, name: 'service 0', img: 'img.jpg'},
{id: 1, name: 'service 1', img: 'img.jpg'},
{id: 2, name: 'service 2', img: 'img.jpg'},
{id: 3, name: 'service 3', img: 'img.jpg'},
{id: 4, name: 'service 4', img: 'img.jpg'},
{id: 5, name: 'service 5', img: 'img.jpg'},
{id: 6, name: 'service 6', img: 'img.jpg'},
{id: 7, name: 'service 7', img: 'img.jpg'},
]}
renderItem={renderServices}
keyExtractor={(item) => item.id.toString()}
numColumns={4}
ItemSeparatorComponent={() => <View style={styles.separator} />}
columnWrapperStyle={styles.columnWrapperStyle}
/>
</View>
{/* FlatList Services 2 */}
<View style={styles.servicesContainer}>
<View style={styles.servicesHeader}>
<Text style={styles.headerTitle}>Services</Text>
<TouchableOpacity>
<Text style={styles.headerTitle}>more</Text>
</TouchableOpacity>
</View>
<FlatList
scrollEnabled={false}
data={[
{id: 0, name: 'service 0', img: 'img.jpg'},
{id: 1, name: 'service 1', img: 'img.jpg'},
{id: 2, name: 'service 2', img: 'img.jpg'},
{id: 3, name: 'service 3', img: 'img.jpg'},
{id: 4, name: 'service 4', img: 'img.jpg'},
{id: 5, name: 'service 5', img: 'img.jpg'},
{id: 6, name: 'service 6', img: 'img.jpg'},
{id: 7, name: 'service 7', img: 'img.jpg'},
]}
renderItem={renderServices}
keyExtractor={(item) => item.id.toString()}
numColumns={4}
ItemSeparatorComponent={() => <View style={styles.separator} />}
columnWrapperStyle={styles.columnWrapperStyle}
/>
</View>
{/* FlatList Services 3 .... */}
....
{/* other data */}
....
</ScrollView>
</View>
);
};