Flutter Todoist App
Details 📜
This is a Flutter app designed to interact with the Todoist API, offering a seamless task management experience. It incorporates modern Flutter technologies, adheres to Clean Architecture principles, and is built for scalability and maintainability.
Table of Contents
Features 🏹
The Flutter Todoist App offers a variety of features aimed at enhancing productivity:
- Task Management: View, add, and manage tasks fetched from the Todoist API.
- Dark and Light Themes: Switch between themes for comfortable viewing.
- Localization: Supports English and German languages, ensuring accessibility for a broader audience.
- Task Timer: Each task includes a built-in timer to help users track time spent.
- Completed Tasks View: Review tasks marked as complete.
- Offline Mode: Retain access to previously fetched tasks using local storage.
- Responsive Design: Adapts beautifully to various screen sizes.
- Clean Architecture: Ensures maintainable, testable, and scalable code structure.
- Unit Testing: Comprehensive tests to ensure functionality and reliability.
Technologies Used
The app is built with the following technologies:
Core Libraries:
- Flutter: Framework for crafting high-quality, natively compiled applications.
- Dart: Programming language optimized for fast development and expressive UI.
State Management and Dependencies:
- Flutter Bloc: Efficient state management solution.
- GetIt: Dependency injection and service locator.
Networking and APIs:
- Dio: HTTP client for managing API calls.
- Retrofit: Simplifies API requests with type-safe REST client generation.
Local Storage and Utilities:
- Hive: Lightweight, blazing fast, key-value database.
- Flutter Secure Storage: For securely storing sensitive user data.
- Shared Preferences: Persistent storage for basic key-value data.
UI and Theming:
- Lottie: Dynamic animations.
- Google Fonts: Enhances UI with custom typography.
- Go Router: Advanced routing for Flutter apps.
Additional Tools:
- Intl: For internationalization and localization.
- Animated Theme Switcher: Enables smooth transitions between themes.
- Connectivity Plus: Monitors internet connectivity.
Prerequisites
Before running the app, make sure you have the following installed:
- Flutter SDK: Version 3.0 or later.
- Dart: Version 2.18 or later.
- Android Studio/Visual Studio Code: With the Flutter and Dart plugins.
- API Access: Ensure you have API credentials for Todoist.
Setup 🕺
-
Clone this repository:
git clone <repository-url> -
Navigate to the project directory:
cd flutter_todoist_app -
Install dependencies:
flutter pub get -
Run the app:
flutter run
For advanced configuration and customization, refer to the lib/config folder for environment-specific settings.
Preview 📱
Below are examples of the app's user interface and features:
Video Demo
Screenshots

Resources ℹ️
- Todoist API Documentation: Todoist API.
- Localization: Flutter Intl Package.
- State Management: Flutter Bloc Documentation.
- Clean Architecture: Based on Uncle Bob’s Clean Architecture.
Contributing
I welcome contributions from the community. To contribute:
- Fork the repository.
- Create a feature or bug fix branch:
git checkout -b feature-name - Commit your changes with clear descriptions:
git commit -m "Add feature description" - Push your branch to your fork:
git push origin feature-name - Submit a pull request with detailed information about your changes.
Libraries
- core\constants\constants_value
- core\constants\storage_value
- core\di\di
- core\error\error_messages
- core\error\failure
- core\theme\theme
- core\util\date_time_convert
- core\util\storage
- data\datasources\comments_remote_datasource
- data\datasources\comments_remote_datasource_impl
- data\datasources\local\projects_local_datasource
- data\datasources\local\sync_local_datasource
- data\datasources\local\tasks_local_datasource
- data\datasources\remote\projects_remote_datasource
- data\datasources\remote\tasks_remote_datasource
- data\models\attachment_model
- data\models\comment_data_request
- data\models\comment_model
- data\models\due_model
- data\models\duration_model
- data\models\project_model_response
- data\models\sync_model
- data\models\task_data_request
- data\models\task_model_response
- data\repositories\comments_repository_impl
- data\repositories\projects_repository_impl
- data\repositories\tasks_repository_impl
- data\sync_manager
- domain\entities\attachment
- domain\entities\comment
- domain\entities\comment_data_request
- domain\entities\comment_request
- domain\entities\due
- domain\entities\project
- domain\entities\section
- domain\entities\task
- domain\entities\task_data_request
- domain\repositories\comments_repository
- domain\repositories\connectivity_util
- domain\repositories\projects_repository
- domain\repositories\tasks_repository
- domain\usecases\base_usecase
- domain\usecases\CloseTaskUseCase
- domain\usecases\create_comments_usecase
- domain\usecases\create_project_usecase
- domain\usecases\create_task_usecase
- domain\usecases\delete_task_usecase
- domain\usecases\delete_usease
- domain\usecases\get_all_comments_usecase
- domain\usecases\get_projects_usecase
- domain\usecases\get_task_usecase
- domain\usecases\get_tasks_usecase
- domain\usecases\no_param
- domain\usecases\update_task_usecase
- gen\assets.gen
- GENERATED CODE - DO NOT MODIFY BY HAND
- main
- presentation\bloc\base\event_base
- presentation\bloc\base\state_base
- presentation\bloc\comment\comment_bloc
- presentation\bloc\create_task\create_task_bloc
- presentation\bloc\project\project_bloc
- presentation\bloc\project\project_event
- presentation\bloc\project\project_state
- presentation\bloc\task\task_bloc
- presentation\bloc\task\task_event
- presentation\bloc\task\task_state
- presentation\bloc\update_task\update_task_bloc
- presentation\bloc\update_task\update_task_event
- presentation\bloc\update_task\update_task_state
- presentation\route\app_router
- presentation\route\rout_paths
- presentation\views\app_drawer
- presentation\views\base\base-state
- presentation\views\base\base-stateless-widget
- presentation\views\custom_view\custom_date_picker
- presentation\views\custom_view\custom_multiline_text_field
- presentation\views\custom_view\custom_normal_text_field
- presentation\views\dialog
- presentation\views\fab
- presentation\views\project_page
- presentation\views\state_widget
- presentation\views\task\create\create_task_screen
- presentation\views\task\create\project_provider
- presentation\views\task\create\project_provider_impl
- presentation\views\task\update\update_task_screen
- presentation\views\task_history
- presentation\views\task_state
- presentation\views\task_tile
- presentation\views\tasks_page
- presentation\views\test
- presentation\views\timer_widget
- services\api\dio_client
- services\api\project_service