import { COLORS } from "@/constants/colors"; import { Person } from "@/types/person"; import { useLocalSearchParams } from "expo-router"; import React, { useEffect, useState } from "react"; import { ScrollView, StyleSheet, Text, View } from "react-native"; const Page = () => { const { id } = useLocalSearchParams(); const [person, setPerson] = useState(null); const [loading, setLoading] = useState(true); useEffect(() => { const fetchPeople = async () => { try { setLoading(true); const response = await fetch(`https://swapi.dev/api/people/${id}`); const data = await response.json(); setPerson(data); } catch (error) { console.error(error); } finally { setLoading(false); } }; fetchPeople(); }, [id]); if (loading) { return ( Loading... ); } if (!person) { return ( Film not found ); } return ( {person.name} Height: {person.height} cm Mass: {person.mass} kg Hair Color: {person.hair_color} Skin Color: {person.skin_color} Eye Color: {person.eye_color} Birth Year: {person.birth_year} Gender: {person.gender} ); }; export default Page; const styles = StyleSheet.create({ container: { flex: 1, padding: 16, backgroundColor: COLORS.background, }, header: { flexDirection: "row", justifyContent: "space-between", alignItems: "center", marginBottom: 16, }, name: { fontSize: 24, fontWeight: "bold", color: COLORS.text, flex: 1, }, favoriteButton: { padding: 8, }, detail: { fontSize: 16, color: COLORS.text, marginBottom: 8, }, });