2025-07-21 15:36:11 +08:00
|
|
|
import React from 'react';
|
2025-07-21 15:10:39 +08:00
|
|
|
import { View, FlatList, StyleSheet } from 'react-native';
|
|
|
|
import { useNavigation } from '@react-navigation/native';
|
|
|
|
import { StackNavigationProp } from '@react-navigation/stack';
|
2025-07-21 15:36:11 +08:00
|
|
|
import { useTasks } from '../context/TasksContext';
|
2025-07-21 15:10:39 +08:00
|
|
|
import TaskCard from '../components/TaskCard';
|
|
|
|
|
|
|
|
type RootStackParamList = {
|
|
|
|
TaskList: undefined;
|
2025-07-21 19:03:11 +08:00
|
|
|
TaskEdit: { task: Task };
|
2025-07-21 15:10:39 +08:00
|
|
|
};
|
|
|
|
|
|
|
|
type TaskListNavigationProp = StackNavigationProp<RootStackParamList, 'TaskList'>;
|
|
|
|
|
|
|
|
export default function TaskListScreen() {
|
2025-07-21 15:36:11 +08:00
|
|
|
const { tasks } = useTasks();
|
2025-07-21 15:10:39 +08:00
|
|
|
const navigation = useNavigation<TaskListNavigationProp>();
|
|
|
|
|
2025-07-21 19:03:11 +08:00
|
|
|
const handlePressTask = (task: Task) => {
|
|
|
|
navigation.navigate('TaskEdit', { task });
|
2025-07-21 15:10:39 +08:00
|
|
|
};
|
|
|
|
|
|
|
|
return (
|
|
|
|
<View style={styles.container}>
|
|
|
|
<FlatList
|
|
|
|
data={tasks}
|
2025-07-21 19:03:11 +08:00
|
|
|
renderItem={({ item }) => <TaskCard task={item} onPress={() => handlePressTask(item)} />}
|
2025-07-21 15:10:39 +08:00
|
|
|
keyExtractor={item => item.id}
|
|
|
|
numColumns={2}
|
2025-07-21 15:36:11 +08:00
|
|
|
contentContainerStyle={styles.list}
|
2025-07-21 15:10:39 +08:00
|
|
|
/>
|
|
|
|
</View>
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
const styles = StyleSheet.create({
|
|
|
|
container: {
|
|
|
|
flex: 1,
|
|
|
|
},
|
2025-07-21 15:36:11 +08:00
|
|
|
list: {
|
2025-07-21 16:45:09 +08:00
|
|
|
paddingHorizontal: 8,
|
|
|
|
}});
|