Welcome!
This repo is my Flutter learning roadmap, starting from the basics of Dart and slowly moving toward advanced Flutter development.
I created it so you can come here, start from the beginning, and keep learning step by step without wondering "What should I learn next?"
You'll find simple examples, practice code, and projects along the way.
First, we'll build a strong foundation in Dart.
- Basics
- Control Flow
- Functions
- Collections
- OOP
- Async Programming
- Advanced Dart
Now we'll start building Flutter apps.
- Project Structure
- Widgets
- Layouts
- Input & Forms
- Navigation
Here we'll learn how to make our apps look and feel better.
- Responsive UI
- Themes
- Animations
- Custom Widgets
As apps grow, managing data and UI state becomes important.
- setState
- Provider
- Riverpod
- Bloc
Now we'll learn how apps work with external data.
- HTTP
- REST APIs
- JSON
- Authentication
Learn how to save data on the device.
- Shared Preferences
- SQLite
- Hive
- Secure Storage
We'll connect our Flutter apps with Firebase.
- Authentication
- Firestore
- Storage
- Notifications
Here we'll learn how to organize bigger applications properly.
- Clean Architecture
- Repository Pattern
- Dependency Injection
- SOLID
Learn how to make sure your code actually works.
- Unit Testing
- Widget Testing
- Integration Testing
Time to go deeper into Flutter.
- Performance
- Isolates
- CustomPainter
- Platform Channels
- Native Integration
Finally, we'll put everything together and build real projects.
- Beginner Projects
- Intermediate Projects
- API Projects
- Firebase Projects
- Production Projects
flutter-roadmap/
│
├── README.md
│
├── 01-dart/
│ ├── 01-basics/
│ ├── 02-control-flow/
│ ├── 03-functions/
│ ├── 04-collections/
│ ├── 05-oop/
│ ├── 06-async-programming/
│ └── 07-advanced-dart/
│
├── 02-flutter-basics/
│ ├── 01-project-structure/
│ ├── 02-widgets/
│ ├── 03-layouts/
│ ├── 04-input-and-forms/
│ └── 05-navigation/
│
├── 03-ui-development/
│ ├── responsive-ui/
│ ├── themes/
│ ├── animations/
│ └── custom-widgets/
│
├── 04-state-management/
│ ├── setState/
│ ├── provider/
│ ├── riverpod/
│ └── bloc/
│
├── 05-data-and-apis/
│ ├── http/
│ ├── rest-api/
│ ├── json/
│ └── authentication/
│
├── 06-local-storage/
│ ├── shared-preferences/
│ ├── sqlite/
│ ├── hive/
│ └── secure-storage/
│
├── 07-firebase/
│ ├── authentication/
│ ├── firestore/
│ ├── storage/
│ └── notifications/
│
├── 08-architecture/
│ ├── clean-architecture/
│ ├── repository-pattern/
│ ├── dependency-injection/
│ └── solid/
│
├── 09-testing/
│ ├── unit-testing/
│ ├── widget-testing/
│ └── integration-testing/
│
├── 10-advanced-flutter/
│ ├── performance/
│ ├── isolates/
│ ├── custom-painter/
│ ├── platform-channels/
│ └── native-integration/
│
└── 11-projects/
├── 01-beginner/
├── 02-intermediate/
├── 03-api-project/
├── 04-firebase-project/
└── 05-production-project/
My goal is to keep this repo simple, practical, and easy to follow.
So if you're learning Flutter, just start with the first folder and build your way up.
You don't need to understand everything on the first try.
Write the code, run it, change it, break it, fix it — that's how you really learn.
Happy coding! 💙