Skip to content

Repository files navigation

Flutter Todo Tutor

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.

🌟 Introduction

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.

✨ Features

  • 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.

📸 Screenshots

Home Task Details Add Task
Home Screen Todo Detail Screen Add Todo Dialog
Edit Task Settings Dark Mode
Edit Todo Screen Settings Screen Dark Mode

🚀 Getting Started

Follow these steps to get the project up and running on your local machine.

Prerequisites

Installation

  1. Clone the repository:
    git clone https://github.com/your-username/flutter_todo_tutor.git
    cd flutter_todo_tutor
  2. Install dependencies:
    flutter pub get
  3. Run the application:
    flutter run

📂 Project Structure

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 as Todo and TodoPriority.
  • providers/: Contains state management logic. todo_list_provider manages 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 the go_router package.
  • 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.

🛠️ Technologies Used

  • State Management: provider for managing application state.
  • Routing: go_router for declarative routing.
  • Local Storage: hive for fast, lightweight, and offline data storage.
  • Testing:

🌊 User Flow

  1. View Todos: The user opens the app and sees a list of their tasks on the home screen.
  2. Add a Todo: The user taps the "add" button to open a dialog, enters the task details, and saves it.
  3. View Task Details: Tapping on a task navigates the user to a detail screen showing more information about the task.
  4. Edit a Todo: From the detail screen, the user can edit the task's title, description, and priority.
  5. Delete a Todo: The user can delete a task from the list.
  6. Change Theme: In the settings screen, the user can switch between light and dark themes.

🔮 Future Enhancements

  • 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.

🤝 Contributing

Contributions are welcome! Please feel free to submit a pull request.

About

Todo list project with Flutter

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages