1
resposta

Resoluçao Desafio(Velocidade)

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Onborading.js

export default function Onboarding({navigation}) {
    const [fazerLogin, setFazerLogin] = useState(false);
    const [altura, setAltura] = useState(250);
    const [velocidade, setVelocidade] = useState(0);

    function avancar() {
        if (fazerLogin) {
            navigation.navigate('Principal');
        } else {
            setAltura(400);
            setFazerLogin(true);
        }
    }

    function diminuirVelocidade() {
        setVelocidade(1000)
    }

 function AumentarVelocidade() {
        setVelocidade(500)
    }

    return (
        <TelaDeFundo>
            <View style={styles.container}>
                <StatusBar barStyle='dark-content' backgroundColor='#FFF'/>
                <Image
                    source={require('../../assets/logo.png')}
                    style={styles.logo}
                />

                <TouchableOpacity
                    onPress={() => diminuirVelocidade()}
                    style={styles.botaoV}>
                    <Text style={styles.botaoTextoV}>1x</Text>
                </TouchableOpacity>

                <TouchableOpacity
                    onPress={() => AumentarVelocidade()}
                    style={styles.botaoV}>
                    <Text style={styles.botaoTextoV}>2x</Text>
                </TouchableOpacity>

                <View style={styles.carrosselArea}>


                    {!fazerLogin &&
                        <Carrocel data={itens} velocidade={velocidade}/>
                    }
                </View>
                <Image
                    source={require('../../assets/medica.png')}
                    style={styles.medicaImg}
                />
                <FundoOndulado height={altura}>
                    <View style={styles.infoArea}>
                        {fazerLogin ?
                            <Formulario
                                titulo="Olá! Acesse sua conta"
                                texto="Entre com suas informações. Senão tiver uma conta ainda crie uma agora"
                            />
                            :
                            <View>
                                <Text style={styles.titulo}>Gerencie as suas consultas</Text>
                                <Text style={styles.texto}>
                                    Você consegue gerenciar todas suas consultas e ver o tempo médio de cada, e a
                                    quantidade de consultas realizadas.
                                </Text>
                            </View>
                        }

                        <TouchableOpacity style={styles.botao} onPress={avancar}>
                            <Text style={styles.botaoTexto}>{fazerLogin ? 'Entrar' : 'Começar'}</Text>
                        </TouchableOpacity>
                    </View>
                </FundoOndulado>
            </View>
        </TelaDeFundo>
    );
}

Carrocel.js


export function Carrocel({data,velocidade}) {
    const carrosselRef = useRef();
    const [indice, setIndice] = useState(0);

    useEffect(() => {
        carrosselRef.current.scrollToIndex({index: indice});
        const intervalo = setInterval(() => {
            alterarPosicaoObjeto();
        }, velocidade ? velocidade : 1000)
        return () => clearInterval(intervalo);
    }, [indice]);

    function alterarPosicaoObjeto() {
        if (indice < data.length - 1) {
            setIndice(indice + 1);
        } else {
            setIndice(0)
        }
    }

    return (
        <View style={styles.conteiner}>
            <FlatList
                data={data}
                horizontal
                showsHorizontalScrollIndicator={false}
                keyExtractor={item => item.id}
                renderItem={({item, index}) => (
                    <Image
                        source={item.imagem}
                        style={[styles.image, index == data.length - 1 ? {marginRight: 200} : null]}
                        resizeMode="contain"
                    />
                )}
                ref={carrosselRef}
            />
        </View>
    )

}
1 resposta

Fala, Edvan! Tudo certo?

Quero parabenizá-lo pelo incrível feito de concluir o desafio e por compartilhar sua solução, que certamente ajudará outros alunos que enfrentam o mesmo problema. Sua dedicação e espírito colaborativo são verdadeiramente notáveis e desempenham um papel fundamental no fortalecimento da nossa comunidade, promovendo um ambiente engajado e colaborativo.

Desejo a você muito sucesso em seus estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software