Flutter Advanced Course - Clean Architecture With MVVM

Become a job ready flutter developer.

4.24 (1006 reviews)
Mobile Apps
Flutter Advanced Course - Clean Architecture With MVVM
20.5 hours
May 2023
last update
regular price

What you will learn

Clean Architecture Design Pattern

MVVM - Model - View - View Model Pattern

ViewModel Inputs and Outputs

Base ViewModel and Base UseCase

Application Layer - Dependency Injection, Routes Manager and Application class

Application Layer - Extensions and Shared Functions

Data Layer - Data Sources (Remote Data Source/ Local Data Source)

Data Layer - API Service Client (Same as Retorfit in Android)

Data Layer - Calling APIs (Remote Data Source)

Data Layer - Adding Logger Interceptor

Data Layer - Caching APIs responses (Local Data Source)

Data Layer - Json Serialization and Annotations

Data Layer - Repository Implementation

Data Layer - Mapper (Converting responses into Models)

Data Layer - Mapper (Using toDomain Concept)

Data Layer - Applying Null Safety

Data Layer - Creating Mock APIs (Stub APIs)

Domain Layer - Models

Domain Layer - Repository Interfaces

Domain Layer - UseCases

Domain Layer - Either Concepts (Left - Failure) / (Right - Success)

Domain Layer - Data Classes

Presentation Layer - UI (Splash - Onboarding - Login - Register - Forgot Password - Main - Details - Settings - Notification - Search))

Presentation Layer - State Renderer (Full Screen States - Popup States)

Presentation Layer - State Management (Stream Controller - RX Dart - Stream Builder)

Presentation Layer - Localisations (English - Arabic), (RTL - LTR)

Presentation Layer - Assets Manager (Android and Ios Icons and Images sizes)

Presentation Layer - (Fonts - Styles - Themes - Strings - Values - Colors) Managers

Presentation Layer - Using Json Animations

Presentation Layer - Using SVG images

Using 18 Flutter Packages

Getting Device Info (Android - Ios)

Using Abstract classes


Flutter is defined as the Google’s UI toolkit for building beautiful, natively compiled applications for mobile (Android, iOS ) desktop (Linux, Mac, Windows, Google Fuchsia) and the web from a single codebase. Since Flutter is cross-platform, you can use the same code base for your iOS and Android app. This can definitely save you both time and resources. This course will help you to move from junior developer to experienced developer. You will have the knowledge of "How to implement a structured project?". Your code will be easily readable, maintainable and sustainable. You will get a real experience from a real project so that you will start coding from scratch to build clean architecture project with MVVM. You will build presentation layer, data layer, domain layer and application layer step by step. This architecture is designed to make it easier to create stable apps even when outer elements such as UI, databases, or external APIs are always changing. It’s essentially a collection of best practice design principles that help you keep business logic, or domain logic, together and minimize the dependencies within the system. After completing this course you can reuse the source code of this course and customize on it to build your clean architecture with MVVM project in a professional way. 



About the Course
Content of the Course
Who Can Attend this Course?

Presentation Layer - Resources Manager

Lecture 4 - Creating Application Class
Lecture 5 - Creating Colors Manager
Lecture 6 - Creating Fonts Manager
Lecture 7 - Creating Values Manager
Lecture 8 - Creating Styles Manager
Lecture 9 - Creating Theme Manager
Lecture 10 - Adding Card Theme
Lecture 11 - Adding App Bar Theme
Lecture 12 - Adding Button Theme
Lecture 13 - Adding Text Theme
Lecture 14 - Adding Text Form Field Theme
Lecture 15 - Start Adding Routes Manager
Lecture 16 - Finish Adding Routes Manager
Lecture 17 - Adding Strings Manager
Lecture 18 - How to Select Image Sizes in Flutter?
Lecture 19 - Best Way to Add Icons to Flutter Project

Presentation Layer - Splash Screen

Lecture 20 - Start Splash Screen
Lecture 21 - Adding Timer to Splash Screen
Lec-22 Change App Name,Laucher Icon and Remove White Screen at Start for Android
Lec-23 Change App Name,Laucher Icon and Remove White Screen at Start for Ios #1
Lec-24 Change App Name,Laucher Icon and Remove White Screen at Start for Ios #2

Presentation Layer - OnBoarding Screen

Lecture 25 - Adding Assets for Onboarding Screen
Lecture 26 - Implementation Onboarding Screen Part1
Lecture 27- Implementation Onboarding Screen Part2
Lecture 28 - Implementation of Onboarding Screen Part3
Lecture 29 - Implementation of Onboarding Screen Part4
Lecture 30 - Implementation of Onboarding Screen Part5
Lecture 31 - Implementation Onboarding Screen Part6
Lecture 32 - Surprise

Presentation Layer - MVVM

Lecture 33 - What is MVVM?
Lecture 34 - Creating Base ViewModel
Lecture 35 - Creating Onboarding Screen ViewModel
Lecture 36 - What is Stream Controller?
Lecture 37 - Adding Stream Controller to Onboarding Viewmodel
Lecture 38 - Onboarding Viewmodel Logic Implemenation
Lecture 39: Continue Onboarding Viewmodel Logic Implemenation
Lecture 40 - Binding Onboarding Viewmodel to View
Lecture 41 - How to Recive Data in View From Viewmodel?

Data / Domain layers - Clean Architecture Design Pattern

Lecture 42 - What is Clean Architecture?
Lecture 43 - Creating Mock APIs
Lecture 44 - Data Layer - Adding Dependencies for network layer
Lecture 45 - Data Layer - Adding APIs Responses
Lecture 46 - Data Layer - Json Serialization
Lecture 47 - Data Layer - Add API Service Client (Retrofit)
Lecture 48 - Domain Layer - Creating Models
Lecture 49 - Application Layer - Creating Extensions Functions
Lecture 50 - Data Layer - Creating Mappers and Applying Null Safety
Lecture 51 - Either Conecpt
Lecture 52 - Domain Layer - Adding Repository, Request and Failure
Lecture 53 - Data Layer - Remote Data Source
Lecture 54 - Data Layer - Adding Netowrk Data Checker
Lecture 55 - Data Layer - Adding Repository Implementer
Lecture 56 - Data Layer - Adding Data Source Enum
Lecture 57 - Data Layer - Adding Responses Codes
Lecture 58 - Data Layer - Adding Responses Messages
Lecture 59 - Data layer - Adding Extension on Data Sources
Lecture 60 - Data Layer - Adding Error Handler Class
Lecture 61 - Data Layer - Applying ErrorHandler on Repository Implementer
Lecture 62 - Data Layer - Adding Dio Factory
Lecture 63 - Data Layer - Adding Dio Logger Interceptor
Lecture 64 - Presentation Layer - Adding Language Manager
Lecture 65 - Application Layer - Adding Application Preferences
Lecture 66 - Update Dio Factory with App Preferences
Lecture 67 - Domain Layer - Adding Base UseCase
Lecture 68 - Domain Layer - Adding Login UseCase
Lecture 69 - Domain Layer - Getting Device Info Part 1
Lecture 70 - Domain Layer - Getting Device Info Part 2

Presentation Layer - Login Flow

Lecture 71 - Adding Login Viewmodel
Lecture 72 - Adding Streams to Login ViewModel
Lecture 73 - Adding Data Classes to Login ViewModel
Lecture 74 - Usage of Data Classes
Lecture 75 - Adding Login UseCase to Login ViewModel
Lecture 76 - Binding Login ViewModel to Login View
Lecture 77 - Login View UI
Lecture 78 - Login View UI Continue
Lecture 79 - Finalising Login UI
Lecture 80 - Adding Stream Controller For Login Button
Lecture 81 - Testing Login UI Implementation
Lecture 82 - Adding Forgot Pasword and Register Texts

Application Layer - Dependency Injection

Lecture 83 - Adding Dependency Injection App Module
Lecture 84 - Add dependency injection Instances
Lecture 85 - Add Dependency Injection Login Module
Lecture 86 - How to Use Instance of Dependency Injection?

Presentation Layer - State Renderer

Lecture 87 - Make App Makes HTTP Request (NOT only HTTPs)
Lecture 88 - Testing Login API
Lecture 89 - Showing Popup State Renderer
Lecture 90 - Showing Full Screen State Renderer
Lecture 91 - Adding State Renderer Implementation
Lecture 92 - Adding State Renderer Implementation Part 2
Lecture 93 - Adding State Renderer Implementation Part 3
Lecture 94 - Adding State Renderer Implementation Part 4
Lecture 95 - Adding State Renderer Implementation Part 5
Lecture 96 - Adding State Renderer Implementation Part 6
Lecture 97 - Adding State Renderer Implementation Part 7
Lecture 98 - Applying State Renderer - Loading State
Lecture 99 - Applying State Renderer - Error State - Empty State - Content State
Lecture 100 - Adding Extension on State Renderer implementer
Lecture 101 -Adding Implementation for Loading State Case
Lect 102 Adding Implementation for (Error State-Empty State-Content State) Cases
Lecture 103 - Handling showing many popup dialogs
Lecture 104 - Adding Input Stream Controller Inside Base ViewModel
Lecture 105 - Updating Login View with Flow State Controller
Lecture 106 - Updating Login ViewModel with Flow State Controller
Lecture 107 - Testing State Renderer Implementation
Lecture 108 - Updating Login API in Mock Stub

Presentation Layer - Handling Pre Login Flow

Lecture 109 - Handling Login Success Result to Go to Main Screen
Lecture 110 - Updating Routes Navigation with App Prefernces
Lecture 111 -Testing Navigation from Splash Screen

Assignment #1 - Forgot Password Flow

Lecture 112 -Assignment #1 Requirement and Creating Mock API
Lecture 113 -Assignment #1 Solution Keys
Lecture 114 -Getting Assigment #1 source code from githup

Assignment #2 - Adding Success State Renderer

Lecture 115 -Assignment Requirement
Lecture 116 -Assignment #2 Solution Keys
Lecture 117 -Creating Pull Request for Assigment #2 Solution

Data / Domain Layers - Registration Flow

Lecture 118 - Createing Mock API for Register Screen
Lecture 119 - Adding Register API Interface and Repository
Lec-120 Add Register API Call in Repository Impl, Remote Data Source and Usecase

Presentation Layer - MVVM - Register Flow

Lecture 121 - Adding Stream Controllers to Register ViewModel
Lecture 122- Adding Register ViewModel Input and Output
Lecture 123 - Implementations of Register ViewModel Inputs and Outputs
Lecture 124 - Adding Streams Implementations in Register ViewModel
Lecture 125 - Adding Register View Object Data Class
Updating Register View Object Data Class
Lecture 127 - Applying Validation to Register ViewModel
Lecture 128 - Add Register API Implementation Inside ViewModel
Lecture 129 -Binding Register ViewModel to View and Adding Dependencey Injection
Lecture 130- Adding Stream Builders Inside Register View
Lecture 131- Adding UI for Register Screen
Lecture 132- Adding UI for Register Screen Part 2
Lecture 133- Adding UI for Register Screen Part 3
Lecture 134- Adding UI for Register Screen Part 4
Lecture 135- Adding UI for Register Screen Part 5
Lecture 136- Adding UI for Register Screen Part 6
Lecture 137- Fixing UI Implementation for Register Screen
Lecture 138- Testing Register Flow
Lecture 139- Finalising Register Flow
Lecture 140- Navigate to Main Screen

Presentation Layer - Main Flow

Lecture 141- Adding Pages Inside Main View
Lecture 142- Finalising Adding Pages inside Main View
Lecture 143 - Testing Pages Inside Main View

Data / Domain Layers - Home Flow

Lecture 144 - Creating Mock API for Home Screen
Lecture 145 - Adding Home API Responses
Lecture 146 - Adding Home API Models
Lecture 147 - Adding Mappers for Home APIs
Lecture 148 - Adding Mappers for Home API Continue
Lecture 149 - Adding Home API Inside App Service Client
Lecture 150 - Updating Remote Data Source and Repository with Home API
Lecture 151 - Adding Home UseCase

Presentation Layer - MVVM - Home Flow

Lecture 152 - Adding Home ViewModel and Rxdart
Lecture 153 - Add Home ViewModel Inputs and Outputs
Lecture 154 - Adding Implementation of Home API in ViewModel
Lec 155 add Home View, Adding Dependency Injection and Binding View to ViewModel
Lecture 156 - Home View UI
Lecture 157 - Adding Banner Carousel Widget
Lecture 158 - Adding Services Widget
Lecture 159 - Adding Stores Widget
Lecture 160 - Testing Home Implementation and Fixing Issues

Assignment #3 - Refactor Home

Lecture 161 - Assignment Requirement
Lecture 162 - Assignment Solution Keys

Data Layer - Caching (Local Data Source)

Lecture 163 - Start Caching Implementation
Lecture 164 - Adding Retrieving Caching Data from Local Data Source
Lecture 165 - Updating Repository Implementer With Local Data Source
Lecture 166 - Testing Caching on Home Page

Assignment #4 - Store Details Flow

Lecture 167 - Assignment Requirement - Creating Mock API
Lecture 168 - Assignment Solution Keys

Presentation Layer - Setting Screen

Lecture 169 - Adding UI of Settings Screen
Lecture 170 - Finalising Setting Screen

Presentation Layer - Localisation

Lecture 171 - Start Implementing Localisation
Lecture 172 - Updating Application Strings
Lecture 173 - Continue Updating Application Strings
Lecture 174 - Updating Application Preferences with langauge changes
Lecture 175 - Update Main function with Localisation
Lecture 176 - Update Application Class and Settings Screen with localisation
Lecture 177 - Testing Localisation

Source Code

Lecture 178 - How to get source code from github?


Lecture 179 - Get More Experience


February 16, 2023
I'am struggling to understand at times, and when I do catch on, the author has moved on. The author has his IDE set in dark mode and seeing what he has typed when the font is black, makes it very difficult to read. This lesson has jumped, with no explanation, so I am once again lost
January 30, 2023
good course for flutter. Not for beginner. just the english is very bad. It's hard to listen and understand. it would be nice, in case the subtitle would be right at least. amazing
January 22, 2023
He has got the content and has a good knowledge about the topic but his explaination is extremely poor, audio quality is really bad. I felt that the instructor is assuming that the student must be aware of many things before hand like the packages which were used (RetroFit etc) as he provided no explaination as to what these packages do.
January 10, 2023
teacher knowledge is amaizing but english language lavele is not good and also voice quality. but totally this is good course
December 3, 2022
Very big effort has been made into this course, very good step up from beginner into pro. Thank you eng. Mina.
November 30, 2022
Just needed a course to learn proper structuring of project in flutter as well as clean architecture, if you are in search of such a course than I can bet this is one of the best courses here in Udemy
October 26, 2022
It is an excellent course, the author explains well and his mastery of the subject is evident, without a doubt one of the best courses he took.
October 14, 2022
Good course if you are familiar with a lot of these concepts like retrofit and design patterns, to be honest, I got stuck after the first presentation layer by the fact that the instructor assumes we are all familiar with what he is doing, I ended up just watching what he was doing. I finally decided to move away from flutter all together into ios development, due to the lack of decent flutter tutorials or a solid enterprise ready flutter tutorial that I can understand without falling into pub conflicts and dart weird syntax.
October 8, 2022
The coding mind is good. But some plugin version is old. I am waiting you can pulish a update course with flutter 3 and something new. Thanks
October 7, 2022
this course really awesome. i am aslo improve my development skill in this course. thank you very much for making this course.
August 17, 2022
It's a good course to learn advanced flutter. I learn MVVM architecture and how to call API using retrofit and many more things. Thank you!
August 12, 2022
Dry, boring and not explained in a good English. Listened just few sections and not getting what I expected. Not wasting more time on this. Good that it was a free course or can I say that no wonder this is a free course because of such quality.
July 17, 2022
Strong accent makes it difficult to understand properly. Some bad practices applied to the app made me drop the course after a few hours.
March 26, 2022
is a good source of coarse and detailed information, but has a poor English accent (sometimes it gets distracting)
March 6, 2022
The course is a marvel. In addition to applying design pattern concepts aligned with the job market, it has also used the most used technologies in the technology market. And it even comes with a great repository on the project's github to have a guide. It was the best MVVM design pattern course I've ever taken. The only thing missing from the course was a testing layer.


11/14/2021100% OFF
11/16/202186% OFF
11/28/2021100% OFF
12/9/2021100% OFF
2/28/2022100% OFF
3/14/2022100% OFF
3/26/2022100% OFF
3/27/202286% OFF
4/3/2022100% OFF
4/19/2022100% OFF
6/4/2022100% OFF
6/13/2022100% OFF
8/6/202285% OFF
8/6/2022100% OFF
8/20/2022100% OFF
9/2/2022100% OFF
9/15/2022100% OFF
11/6/2022100% OFF
11/18/2022100% OFF
1/5/2023100% OFF
3/23/2023100% OFF
4/3/2023100% OFF
5/2/2023100% OFF
5/19/2023100% OFF
6/3/2023100% OFF



Flutter Advanced Course - Clean Architecture With MVVM - Price chart


Flutter Advanced Course - Clean Architecture With MVVM - Ratings chart

Enrollment distribution

Flutter Advanced Course - Clean Architecture With MVVM - Distribution chart
udemy ID
course created date
course indexed date
course submited by