A Flutter application for managing tasks with local SQLite database storage. The app provides comprehensive task management with filtering, sorting, and search capabilities.
- CRUD Operations: Create, read, update, and delete tasks
- Local Storage: SQLite database for offline data persistence
- Search: Find tasks by title
- Priority Management: Organize tasks with Low, Medium, High priority levels
- Filtering: Filter tasks by priority
- Sorting: Sort by creation date or last updated date (ascending/descending)
- Recently Deleted: View and restore deleted tasks
- Dark Theme: Modern UI with Google Fonts
- Tap the floating action button
- Enter task title (required, minimum 4 characters)
- Add optional description (up to 300 characters)
- Select priority level
- Save the task
- View: Tap on any task to see details
- Edit: Use the menu in task detail view
- Delete: Tasks are moved to "Recently Deleted"
- Search: Use the search bar to find tasks by title
- Filter: Select priority chips to filter tasks
- Sort: Use dropdown to change sorting options
Access through the main screen menu to:
- View deleted tasks
- Restore tasks back to active list
- Permanently delete tasks
The project follows a clean architecture pattern with feature-based organization:
lib/
├── application.dart # Main app configuration
├── main.dart # App entry point
├── core/
│ └── database/
│ └── local_database.dart # SQLite database initialization
└── features/
├── todo/ # Main todo functionality
│ ├── model/ # Data models and enums
│ ├── service/ # Database operations
│ ├── view/ # UI screens and widgets
│ ├── view_model/ # State management (Provider)
│ └── utils/ # Constants and utilities
└── recently_deleted/ # Recently deleted functionality
├── service/ # Database operations for deleted items
├── view/ # UI for recently deleted items
└── view_model/ # State management
The application uses SQLite with the following table structure:
CREATE TABLE Todos (
id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
title TEXT NOT NULL,
description TEXT,
completed INTEGER NOT NULL,
priority TEXT NOT NULL,
createdAt INTEGER NOT NULL,
updatedAt INTEGER,
deletedAt INTEGER
);- flutter: UI framework
- sqflite: SQLite database for Flutter
- provider: State management
- google_fonts: Custom typography
- intl: Date formatting and internationalization
- equatable: Value equality for Dart classes
- dartz: Functional programming utilities
- cupertino_icons: iOS-style icons
- flutter_test: Testing framework
- flutter_lints: Dart linter rules