// App.js
import React, { useState } from 'react';
import { View, Text, TextInput, Button, FlatList, StyleSheet } from 'react-native';

const App = () => {
    const [description, setDescription] = useState('');
    const [amount, setAmount] = useState('');
    const [entries, setEntries] = useState([]);

    const addEntry = () => {
        if (description && amount) {
            setEntries([...entries, { id: Math.random().toString(), description, amount: parseFloat(amount) }]);
            setDescription('');
            setAmount('');
        }
    };

    const calculateTotal = () => {
        return entries.reduce((total, entry) => total + entry.amount, 0);
    };

    return (
        <View style={styles.container}>
            <Text style={styles.header}>Expense Tracker</Text>
            <TextInput
                style={styles.input}
                placeholder="Description"
                value={description}
                onChangeText={setDescription}
            />
            <TextInput
                style={styles.input}
                placeholder="Amount"
                keyboardType="numeric"
                value={amount}
                onChangeText={setAmount}
            />
            <Button title="Add Entry" onPress={addEntry} />
            <FlatList
                data={entries}
                renderItem={({ item }) => (
                    <View style={styles.entryItem}>
                        <Text>{item.description}</Text>
                        <Text>${item.amount.toFixed(2)}</Text>
                    </View>
                )}
                keyExtractor={item => item.id}
            />
            <Text style={styles.total}>Total: ${calculateTotal().toFixed(2)}</Text>
        </View>
    );
};

const styles = StyleSheet.create({
    container: {
        flex: 1,
        padding: 20,
        backgroundColor: '#fff',
    },
    header: {
        fontSize: 24,
        marginBottom: 20,
    },
    input: {
        borderBottomWidth: 1,
        marginBottom: 10,
        paddingHorizontal: 10,
        fontSize: 18,
    },
    entryItem: {
        flexDirection: 'row',
        justifyContent: 'space-between',
        paddingVertical: 10,
        borderBottomWidth: 1,
    },
    total: {
        fontSize: 24,
        marginTop: 20,
    },
});

export default App;
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.
  • 62.
  • 63.
  • 64.
  • 65.
  • 66.
  • 67.
  • 68.
  • 69.
  • 70.
  • 71.
  • 72.
  • 73.
  • 74.
  • 75.
  • 76.
  • 77.
  • 78.
  • 79.
  • 80.
  • 81.
  • 82.