A simple and intuitive todo list application built with Flutter. This project aims to help you organize and keep track of your tasks while serving as a practical learning resource for Flutter development.
This project was born out of a desire to create a functional tool for daily task management and to embark on a journey of learning Flutter. As a first project, it covers fundamental concepts of mobile app development, from UI design to state management and local storage.
- Create, Read, Update, and Delete (CRUD) Tasks: Easily add, view, edit, and delete your todos.
- Task Details: Add descriptions and set priorities for your tasks.
- Theme Customization: Switch between light and dark modes for a personalized experience.
- Settings Screen: Control application-wide settings.
| Home | Task Details | Add Task |
|---|---|---|
![]() |
![]() |
![]() |
| Edit Task | Settings | Dark Mode |
|---|---|---|
![]() |
![]() |
![]() |
Follow these steps to get the project up and running on your local machine.
- Flutter SDK
- An editor like VS Code or Android Studio
- Clone the repository:
git clone https://github.com/your-username/flutter_todo_tutor.git cd flutter_todo_tutor - Install dependencies:
flutter pub get
- Run the application:
flutter run
The project is organized into the following directories inside the lib folder:
main.dart: The entry point of the application.models/: Defines the data models for the application, such asTodoandTodoPriority.providers/: Contains state management logic.todo_list_providermanages the state of the todo list and interacts with the repository.repositories/: The data access layer, defining actions that can be performed on the storage (e.g.,LocalTodoRepository).router/: Configures navigation and routing using thego_routerpackage.screens/: Contains the UI for each screen of the application (e.g.,HomeScreen,TodoDetailScreen).theme/: Handles theme switching and defines the application's visual themes.widgets/: Reusable UI components used across different screens (e.g.,TodoItem,AddTodoDialog).
The project also includes:
test/: Contains unit and widget tests.integration_test/: Contains integration tests that cover user flows.
- State Management: provider for managing application state.
- Routing: go_router for declarative routing.
- Local Storage: hive for fast, lightweight, and offline data storage.
- Testing:
- flutter_test for widget testing.
- mockito for creating mock dependencies in tests.
- integration_test for end-to-end testing.
- View Todos: The user opens the app and sees a list of their tasks on the home screen.
- Add a Todo: The user taps the "add" button to open a dialog, enters the task details, and saves it.
- View Task Details: Tapping on a task navigates the user to a detail screen showing more information about the task.
- Edit a Todo: From the detail screen, the user can edit the task's title, description, and priority.
- Delete a Todo: The user can delete a task from the list.
- Change Theme: In the settings screen, the user can switch between light and dark themes.
- Add due dates and reminders for tasks.
- Implement task categories or tags.
- Add animations for a more fluid user experience.
- Cloud synchronization to back up and sync tasks across devices.
- User authentication.
Contributions are welcome! Please feel free to submit a pull request.





