Flutter Advanced Course - Clean Architecture With MVVM

Become a job ready flutter developer.

4.39 (580 reviews)
Udemy
platform
English
language
Mobile Apps
category
instructor
Flutter Advanced Course - Clean Architecture With MVVM
20,623
students
20.5 hours
content
Nov 2021
last update
$84.99
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

Description

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. 

Content

Introduction

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?

Bonus!

Lecture 179 - Get More Experience

Reviews

Ângelo
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.
Syed
June 8, 2022
Thats a waste of time and money, he can't even speak proper English, please don't try to teach again. You have wasted my time and money.
Sanjay
May 10, 2022
Looks promising. Already taught me how to properly structure my Flutter code and what proper convention I can use to further enhance my code. I find the lesson pretty helpful.
Shreedev
April 30, 2022
I have been very fond of udemy courses and the teaching they provide on, it has been very helpful for my understanding of flutter programming.
Görkem
April 27, 2022
I finished the course in a very short time. It was the best course i took so i want to write something. Even if you don't speak English, you can learn a lot by watching. I have been working on flutter for about 1.5 years this course was what took me to the next level. I hope you produce many more courses.Thank you for everything greetings from Turkey
Klodjan
April 4, 2022
It is a very good course but would prefer more explanation on topics, not just walking through the code.
Arun
March 28, 2022
Amazing, above expectations! want want also about use JWT and login with Social accounts like google and facebook.
Akram
March 26, 2022
is a good source of coarse and detailed information, but has a poor English accent (sometimes it gets distracting)
Daniel
March 21, 2022
The sound is very bad sometimes you do not understand what you are saying, it also has a muletilla of "amaizing" and tired of being listening to it, for this reason you can not take the course continuously you have to be giving breaks. El sonido es muy malo a veces no se entiende lo que esta diciendo, también tiene una muletilla de "amaizing" y cansa de estar oyéndolo, por esta razón no se puede tomar el curso de manera continua hay que estar dando pausas.
Muhammad
March 5, 2022
I was searching for this outstanding course. As a flutter developer, I did not feel comfortable while handling the larger project and managing the project but now learned new and advanced concepts which will surely be helpful InshaAllah. The instructor has lot of experience. thank you so much for the amazing course.
Lamarabet
February 6, 2022
Best course To create an integrated application that is very good for beginners, intermediate and advanced, and the teacher explains excellently
Aditya
January 9, 2022
The accent is not fluent. Unable to understand. Even the subtitles are very different than what he is talking..
Rohan
January 6, 2022
I am struggling to understand what he is saying and also the start is not good (First he should have taught about the file structure and all)
Nabil
January 4, 2022
Amazziiing . This is freaking me out how deep it's in term of quantity and quality of the lessons. I'm a Senior Android developer and I started directly with theses sessions for my project because I already had the notions of clean architecture. Thank you so much :)
Mohammad
November 28, 2021
Excellent advanced course with detailed explanation. Best course to improve your skills to the next level.

Charts

Price

Flutter Advanced Course - Clean Architecture With MVVM - Price chart

Rating

Flutter Advanced Course - Clean Architecture With MVVM - Ratings chart

Enrollment distribution

Flutter Advanced Course - Clean Architecture With MVVM - Distribution chart

Coupons

DateDiscountStatus
11/14/2021100% OFF
expired
11/16/202186% OFF
expired
11/28/2021100% OFF
expired
12/9/2021100% OFF
expired
2/28/2022100% OFF
expired
3/14/2022100% OFF
expired
3/26/2022100% OFF
expired
3/27/202286% OFF
expired
4/3/2022100% OFF
expired
4/19/2022100% OFF
expired
6/4/2022100% OFF
expired
6/13/2022100% OFF
expired
8/6/202285% OFF
working
8/6/2022100% OFF
expired
4256518
udemy ID
8/22/2021
course created date
11/14/2021
course indexed date
Bot
course submited by