1. Agora, nós vamos criar a parte de selecionar a frequência do hábito, se ele será mensal, semanal ou diário. Nós vamos criar do mesmo estilo que foi criado o “SelectHabit” “Components → HabitPage → SelectFrequency → index.jsx”

  2. Iremos criar a estrutura da página, que é bem semelhante a do SelectHabit, então podemos acelerar a nossa criação.

    import React from "react";
    import { Image, View, StyleSheet } from "react-native";
    
    export default function SelectFrequency ({ habitFrequency, frequencyInput }) {
      return (
        <View>
          
        </View>
      );
    };
    
  3. O nosso data aqui, como são apenas 3 valores, podemos colocar dentro da própria página. Não será necessário criar um arquivo externo que nem fizemos no selectHabit.

    import React, { useEffect, useState } from "react";
    import { Image, View, StyleSheet } from "react-native";
    import { SelectList } from "react-native-dropdown-select-list";
    
    export default function SelectFrequency ({ habitFrequency, frequencyInput }) {
      const [selected, setSelected] = useState(
        habitFrequency ? habitFrequency : "-"
      );
    
      const data = [
        { key: "Diário", value: "Diário" },
        { key: "Semanal", value: "Semanal" },
        { key: "Mensal", value: "Mensal" },
      ];
    
      useEffect(() => {
        frequencyInput(habitFrequency ? habitFrequency : undefined);
      }, []);
    
      return (
        <View>
          
        </View>
      );
    };
    
  4. Agora basta colocarmos o dropdown. Iremos colocar uma margin inline nele, para que ele fique espaçado do componente de baixo.

    import React, { useEffect, useState } from "react";
    import { Image, View, StyleSheet } from "react-native";
    import { SelectList } from "react-native-dropdown-select-list";
    
    export default function SelectFrequency ({ habitFrequency, frequencyInput }) {
      const [selected, setSelected] = useState(
        habitFrequency ? habitFrequency : "-"
      );
    
      const data = [
        { key: "Diário", value: "Diário" },
        { key: "Semanal", value: "Semanal" },
        { key: "Mensal", value: "Mensal" },
      ];
    
      useEffect(() => {
        frequencyInput(habitFrequency ? habitFrequency : undefined);
      }, []);
    
      return (
        <View style={{ marginBottom: 20 }}>
          <SelectList
            data={data}
            search={false}
            setSelected={setSelected}
            onSelect={() => {
              alert(selected);
              frequencyInput(selected);
            }}
            placeholder={selected}
            boxStyles={styles.boxStyle}
            inputStyles={styles.inputStyle}
            dropdownStyles={styles.dropdownStyle}
            dropdownItemStyles={styles.dropdownItemStyle}
            dropdownTextStyles={styles.dropdownTextStyle}
            arrowicon={
              <Image
                source={require("../../../assets/icons/arrowDropdown.png")}
                style={styles.arrow}
              />
            }
          />
        </View>
      );
    };
    
    const styles = StyleSheet.create({
      boxStyle: {
        borderWidth: 1,
        borderColor: "white",
        paddingHorizontal: 20,
        paddingVertical: 15,
      },
      inputStyle: {
        color: "white",
      },
      dropdownStyle: {
        borderWidth: 0,
      },
      dropdownItemStyle: {
        borderWidth: 1,
        borderColor: "#BBBB",
        borderRadius: 10,
        marginBottom: 15,
      },
      dropdownTextStyle: {
        color: "#BBBBBB",
      },
      arrow: {
        width: 20,
        height: 20,
      },
    });
    
  5. Agora vamos colocar ele dentro do arquivo de “HabitPage”, para que possamos chamar esse dropdown também. “Pages → HabitPage → index.jsx”

    import React, { useState } from "react";
    import {
      View,
      Text,
      StyleSheet,
      Image,
      TouchableOpacity,
      ScrollView,
    } from "react-native";
    
    import { useNavigation } from "@react-navigation/native";
    
    import SelectHabit from "../../components/HabitPage/SelectHabit";
    
    export default function HabitPage({ route }) {
    	const navigation = useNavigation();
    	const [habitInput, setHabitInput] = useState();
    	const [frequencyInput, setFrequencyInput] = useState();
    
    	const { create, habit } = route.params;
    
      return (
        <View style={styles.container}>
          <ScrollView>
            <View>
              <TouchableOpacity
                style={styles.bakcPageBtn}
                onPress={() => navigation.goBack()}
              >
                <Image
                  source={require("../../assets/icons/arrowBack.png")}
                  style={styles.arrowBack}
                />
              </TouchableOpacity>
              <View style={styles.mainContent}>
                <Text style={styles.title}>Configurações {"\\n"} de hábito</Text>
                <Text style={styles.inputText}>Área</Text>
                <View style={styles.inputContainer}>
                  <Text style={styles.area}>{habit?.habitArea}</Text>
                </View>
    
                <Text style={styles.inputText}>Hábito</Text>
                <SelectHabit habit={habit} habitInput={setHabitInput} />
    
    						<Text style={styles.inputText}>Frequência</Text>
                <SelectFrequency
                  habitFrequency={habit?.habitFrequency}
                  frequencyInput={setFrequencyInput}
                />
              </View>
            </View>
          </ScrollView>
        </View>
      );
    }
    
    const styles = StyleSheet.create({
      container: {
        flex: 1,
        backgroundColor: "rgba(21, 21, 21, 0.98)",
      },
      bakcPageBtn: {
        width: 40,
        height: 40,
        margin: 25,
      },
      arrowBack: {
        width: 40,
        height: 40,
      },
      mainContent: {
        width: 250,
        alignSelf: "center",
      },
      title: {
        fontWeight: "bold",
        textAlign: "center",
        color: "white",
        fontSize: 30,
      },
      inputText: {
        color: "white",
        fontSize: 16,
        marginTop: 35,
        marginBottom: 10,
        marginLeft: 5,
      },
      inputContainer: {
        borderWidth: 1,
        borderColor: "#FFFFFF",
        borderRadius: 10,
        paddingHorizontal: 20,
        paddingVertical: 15,
      },
      area: {
        color: "#BBBBBB",
        fontSize: 15,
      },
    });
    
  6. Podemos verificar que ao clicar nele, vamos ter as frequências para selecionarmos.