Nós vamos começar criando a nossa pasta chamada Feedback dentro de screens, com os arquivos index e styled.
Nós vamos após ter feito isso criar o container da nossa tela
import styled from "styled-components/native";
import Constants from "expo-constants";
const statusBarHeight = Constants.statusBarHeight;
export const Container = styled.View`
flex: 1;
background-color: ${({ theme }) => theme.colors.backgroundLight};
padding-top: ${statusBarHeight}px;
`;
Após ter feito isso nós vamos utilizar lá no index. Vamos fazer a mesma coisa, como não terá scroll, a gente vai já usar o navbar.
Vamos também utilizar o ProfileInfo, já que ele também por enquanto vai ser fixo.
return (
<Container>
<DefaultTitle title="AVALIAR" fontSize={20} />
<ProfileInfo />
<NavBar />
</Container>
);
Agora nós vamos criar a nossa rota
export type PropsNavigationStack = {
// ... Outros códigos
Feedback: undefined;
};
// ... Outros códigos
const Routes = () => {
return (
<NavigationContainer>
<Stack.Navigator
screenOptions={{
headerShown: false,
}}
>
{/* Outros códigos */}
<Stack.Screen name="Feedback" component={Feedback} />
</Stack.Navigator>
</NavigationContainer>
);
};
Após a rota ter sido criada, nós vamos linkar os locais onde podemos avaliar, nós vamos primeiro na tela de product (no componente de SellerInfo), para colocar envolta das estrelas
return (
<Container>
<SellerContainer>
<Name>Lucas Queiroga</Name>
<Button
onPress={() => {
navigation.navigate("Feedback");
}}
>
<AirbnbRating
selectedColor="#5F96ED"
showRating={false}
isDisabled={true}
size={16}
defaultRating={Rate}
starContainerStyle={{
marginLeft: -20,
}}
/>
</Button>
</SellerContainer>
<SeeProfile
onPress={() => {
handleNavSellerProfile();
}}
>
Ver Perfil
</SeeProfile>
</Container>
);
Agora colocaremos isso também em profile info, para que as pessoas possam avaliar o vendedor ao clicar no texto que ele não tem avaliação ou nas estrelas caso já tenha.
Vamos criar o estilo do button
export const Button = styled.TouchableOpacity``;
E em seguida vamos utilizar isso no index
const ProfileInfo = () => {
const navigation = useNavigation<PropsStack>();
const Rate = 4;
return (
<>
<Container>
<PrincipalInfoContainer>
<NamePhoneContainer>
<Name>Lucas Queiroga</Name>
<Phone>(81) 99999-9999</Phone>
</NamePhoneContainer>
{!Rate ? (
<DefaultText
onPress={() => {
navigation.navigate("Feedback");
}}
>
Sem Avaliações
</DefaultText>
) : (
<Button
onPress={() => {
navigation.navigate("Feedback");
}}
>
<AirbnbRating
selectedColor="#5F96ED"
showRating={false}
isDisabled={true}
size={16}
defaultRating={Rate}
starContainerStyle={{
paddingTop: 4,
}}
/>
</Button>
)}
</PrincipalInfoContainer>
<DefaultText>Usuário desde 20/04/23</DefaultText>
<DefaultText>04 anúncios ativos</DefaultText>
</Container>
<Hr />
</>
);
};
Agora podemos acessar de todas essas telas