import { Animated, Easing, StyleSheet, Text, TextProps, View } from 'react-native' import React, { useEffect, useRef, useState } from 'react' import LinearGradient from 'react-native-linear-gradient' interface Props { gradientColors: string[] textStyle?: TextProps['style'] } export default function Listening({ gradientColors, textStyle }: Props) { const [width, setWidth] = useState(0) const gradientAnim = useRef(new Animated.Value(0)).current useEffect(() => { Animated.loop( Animated.timing(gradientAnim, { duration: 3000, easing: Easing.linear, isInteraction: false, useNativeDriver: true, toValue: 1 }) ).start() }, [gradientAnim]) return ( { setWidth(nativeEvent.layout.width) }} > LISTENING ) } const styles = StyleSheet.create({ listening: { position: 'relative', height: 50, justifyContent: 'center', alignItems: 'center', alignSelf: 'center', overflow: 'hidden', paddingHorizontal: 20, paddingVertical: 10, borderRadius: 30 }, gradientWrap: { flexDirection: 'row' }, gradient: {}, listeningText: { fontSize: 18, color: 'white' } })