Flutter Advanced Clean Architecture With Mvvm

Become a job ready flutter developer.

Last updated 2022-01-10 | 4.5

- Clean Architecture Design Pattern
- MVVM - Model - View - View Model Pattern
- ViewModel Inputs and Outputs

What you'll 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

* Requirements

* Dart and Flutter Knowlege is a MUST
* Install Android Studio or Visual Studio and have Flutter SDK ready

Description

  • 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

Course content

25 sections • 181 lectures

About the Course Preview 01:07

Content of the Course Preview 04:21

Who Can Attend this Course? Preview 00:42

Lecture 4 - Creating Application Class Preview 13:36

https://github.com/minafarideleia/complete_advanced_flutter

Lecture 5 - Creating Colors Manager Preview 11:47

Lecture 6 - Creating Fonts Manager Preview 10:22

Lecture 7 - Creating Values Manager Preview 03:37

Lecture 8 - Creating Styles Manager Preview 10:05

Lecture 9 - Creating Theme Manager Preview 06:04

Lecture 10 - Adding Card Theme Preview 02:13

Lecture 11 - Adding App Bar Theme Preview 03:56

Lecture 12 - Adding Button Theme Preview 06:05

Lecture 13 - Adding Text Theme Preview 05:29

Lecture 14 - Adding Text Form Field Theme Preview 11:32

Lecture 15 - Start Adding Routes Manager Preview 09:24

Lecture 16 - Finish Adding Routes Manager Preview 07:47

Lecture 17 - Adding Strings Manager Preview 03:16

Lecture 18 - How to Select Image Sizes in Flutter? Preview 07:06

Lecture 19 - Best Way to Add Icons to Flutter Project Preview 06:27

Lecture 20 - Start Splash Screen Preview 08:23

Lecture 21 - Adding Timer to Splash Screen Preview 06:13

Lec-22 Change App Name,Laucher Icon and Remove White Screen at Start for Android Preview 15:06

Lec-23 Change App Name,Laucher Icon and Remove White Screen at Start for Ios #1 Preview 08:26

Lec-24 Change App Name,Laucher Icon and Remove White Screen at Start for Ios #2 Preview 05:18

Lecture 25 - Adding Assets for Onboarding Screen Preview 08:47

Lecture 26 - Implementation Onboarding Screen Part1 Preview 11:14

Lecture 27- Implementation Onboarding Screen Part2 Preview 08:14

Lecture 28 - Implementation of Onboarding Screen Part3 Preview 09:22

Lecture 29 - Implementation of Onboarding Screen Part4 Preview 15:16

Lecture 30 - Implementation of Onboarding Screen Part5 Preview 10:10

Lecture 31 - Implementation Onboarding Screen Part6 Preview 03:11

Lecture 32 - Surprise Preview 01:44

Lecture 33 - What is MVVM? Preview 04:56

Lecture 34 - Creating Base ViewModel Preview 05:03

Lecture 35 - Creating Onboarding Screen ViewModel Preview 09:24

Lecture 36 - What is Stream Controller? Preview 03:01

Lecture 37 - Adding Stream Controller to Onboarding Viewmodel Preview 07:00

Lecture 38 - Onboarding Viewmodel Logic Implemenation Preview 11:41

Lecture 39: Continue Onboarding Viewmodel Logic Implemenation Preview 03:25

Lecture 40 - Binding Onboarding Viewmodel to View Preview 05:18

Lecture 41 - How to Recive Data in View From Viewmodel? Preview 11:53

Lecture 42 - What is Clean Architecture? Preview 04:52

Lecture 43 - Creating Mock APIs Preview 09:13

Lecture 44 - Data Layer - Adding Dependencies for network layer Preview 04:51

Lecture 45 - Data Layer - Adding APIs Responses Preview 09:54

Lecture 46 - Data Layer - Json Serialization Preview 12:57

Lecture 47 - Data Layer - Add API Service Client (Retrofit) Preview 09:12

Lecture 48 - Domain Layer - Creating Models Preview 04:19

Lecture 49 - Application Layer - Creating Extensions Functions Preview 04:38

Lecture 50 - Data Layer - Creating Mappers and Applying Null Safety Preview 11:49

Lecture 51 - Either Conecpt Preview 02:28

Lecture 52 - Domain Layer - Adding Repository, Request and Failure Preview 07:15

Lecture 53 - Data Layer - Remote Data Source Preview 06:46

Lecture 54 - Data Layer - Adding Netowrk Data Checker Preview 06:14

Lecture 55 - Data Layer - Adding Repository Implementer Preview 12:35

Lecture 56 - Data Layer - Adding Data Source Enum Preview 05:22

Lecture 57 - Data Layer - Adding Responses Codes Preview 06:26

Lecture 58 - Data Layer - Adding Responses Messages Preview 03:57

Lecture 59 - Data layer - Adding Extension on Data Sources Preview 06:06

Lecture 60 - Data Layer - Adding Error Handler Class Preview 14:19

Lecture 61 - Data Layer - Applying ErrorHandler on Repository Implementer Preview 07:10

Lecture 62 - Data Layer - Adding Dio Factory Preview 08:50

Lecture 63 - Data Layer - Adding Dio Logger Interceptor Preview 05:15

Lecture 64 - Presentation Layer - Adding Language Manager Preview 04:08

Lecture 65 - Application Layer - Adding Application Preferences Preview 06:41

Lecture 66 - Update Dio Factory with App Preferences Preview 02:16

Lecture 67 - Domain Layer - Adding Base UseCase Preview 04:37

Lecture 68 - Domain Layer - Adding Login UseCase Preview 04:25

Lecture 69 - Domain Layer - Getting Device Info Part 1 Preview 06:34

Lecture 70 - Domain Layer - Getting Device Info Part 2 Preview 03:56

Lecture 71 - Adding Login Viewmodel Preview 09:17

Lecture 72 - Adding Streams to Login ViewModel Preview 07:30

Lecture 73 - Adding Data Classes to Login ViewModel Preview 09:02

Lecture 74 - Usage of Data Classes Preview 01:56

Lecture 75 - Adding Login UseCase to Login ViewModel Preview 05:18

Lecture 76 - Binding Login ViewModel to Login View Preview 05:55

Lecture 77 - Login View UI Preview 13:22

Lecture 78 - Login View UI Continue Preview 07:40

Lecture 79 - Finalising Login UI Preview 03:43

Lecture 80 - Adding Stream Controller For Login Button Preview 10:35

Lecture 81 - Testing Login UI Implementation Preview 05:14

Lecture 82 - Adding Forgot Pasword and Register Texts Preview 07:00

Lecture 83 - Adding Dependency Injection App Module Preview 10:52

Lecture 84 - Add dependency injection Instances Preview 10:13

Lecture 85 - Add Dependency Injection Login Module Preview 05:59

Lecture 86 - How to Use Instance of Dependency Injection? Preview 02:40

Lecture 87 - Make App Makes HTTP Request (NOT only HTTPs) Preview 03:51

Lecture 88 - Testing Login API Preview 07:09

Lecture 89 - Showing Popup State Renderer Preview 02:04

Lecture 90 - Showing Full Screen State Renderer Preview 02:59

Lecture 91 - Adding State Renderer Implementation Preview 12:29

Lecture 92 - Adding State Renderer Implementation Part 2 Preview 05:51

Lecture 93 - Adding State Renderer Implementation Part 3 Preview 08:05

Lecture 94 - Adding State Renderer Implementation Part 4 Preview 06:25

Lecture 95 - Adding State Renderer Implementation Part 5 Preview 07:50

Lecture 96 - Adding State Renderer Implementation Part 6 Preview 05:12

Lecture 97 - Adding State Renderer Implementation Part 7 Preview 07:04

Lecture 98 - Applying State Renderer - Loading State Preview 05:29

Lecture 99 - Applying State Renderer - Error State - Empty State - Content State Preview 04:31

Lecture 100 - Adding Extension on State Renderer implementer Preview 05:00

Lecture 101 -Adding Implementation for Loading State Case Preview 08:41

Lect 102 Adding Implementation for (Error State-Empty State-Content State) Cases Preview 02:58

Lecture 103 - Handling showing many popup dialogs Preview 05:26

Lecture 104 - Adding Input Stream Controller Inside Base ViewModel Preview 07:54

Lecture 105 - Updating Login View with Flow State Controller Preview 06:05

Lecture 106 - Updating Login ViewModel with Flow State Controller Preview 06:29

Lecture 107 - Testing State Renderer Implementation Preview 02:19

Lecture 108 - Updating Login API in Mock Stub Preview 02:21

Lecture 109 - Handling Login Success Result to Go to Main Screen Preview 06:57

Lecture 110 - Updating Routes Navigation with App Prefernces Preview 11:32

Lecture 111 -Testing Navigation from Splash Screen Preview 01:50

Lecture 112 -Assignment #1 Requirement and Creating Mock API

you have to add the implementation of forgot password screen

Lecture 112 -Assignment #1 Requirement and Creating Mock API Preview 04:21

Lecture 113 -Assignment #1 Solution Keys Preview 05:29

Lecture 114 -Getting Assigment #1 source code from githup Preview 03:55

Pull request URL:
https://github.com/minafarideleia/complete_advanced_flutter/pull/100/files

Branch Source Code:
https://github.com/minafarideleia/complete_advanced_flutter/tree/Lecture_113_Assignment_%231_Forgot_password_Solution_Keys

Lecture 115 -Assignment Requirement Preview 01:43

Lecture 116 -Assignment #2 Solution Keys Preview 02:53

Lecture 117 -Creating Pull Request for Assigment #2 Solution Preview 01:09

Lecture 118 - Createing Mock API for Register Screen Preview 05:33

Lecture 119 - Adding Register API Interface and Repository Preview 05:34

Lec-120 Add Register API Call in Repository Impl, Remote Data Source and Usecase Preview 06:29

Lecture 121 - Adding Stream Controllers to Register ViewModel Preview 05:20

Lecture 122- Adding Register ViewModel Input and Output Preview 08:51

Lecture 123 - Implementations of Register ViewModel Inputs and Outputs Preview 08:06

Lecture 124 - Adding Streams Implementations in Register ViewModel Preview 07:16

Lecture 125 - Adding Register View Object Data Class Preview 03:43

Updating Register View Object Data Class Preview 10:54

Lecture 127 - Applying Validation to Register ViewModel Preview 08:09

Lecture 128 - Add Register API Implementation Inside ViewModel Preview 04:21

Lecture 129 -Binding Register ViewModel to View and Adding Dependencey Injection Preview 08:29

Lecture 130- Adding Stream Builders Inside Register View Preview 04:18

Lecture 131- Adding UI for Register Screen Preview 04:57

Lecture 132- Adding UI for Register Screen Part 2 Preview 13:07

Lecture 133- Adding UI for Register Screen Part 3 Preview 04:29

Lecture 134- Adding UI for Register Screen Part 4 Preview 12:21

Lecture 135- Adding UI for Register Screen Part 5 Preview 10:04

Lecture 136- Adding UI for Register Screen Part 6 Preview 02:55

Lecture 137- Fixing UI Implementation for Register Screen Preview 08:01

Lecture 138- Testing Register Flow Preview 04:11

Lecture 139- Finalising Register Flow Preview 11:41

Lecture 140- Navigate to Main Screen Preview 03:24

Lecture 141- Adding Pages Inside Main View Preview 10:22

Lecture 142- Finalising Adding Pages inside Main View Preview 07:08

Lecture 143 - Testing Pages Inside Main View Preview 02:38

Lecture 144 - Creating Mock API for Home Screen Preview 06:07

Lecture 145 - Adding Home API Responses Preview 10:01

Lecture 146 - Adding Home API Models Preview 04:20

Lecture 147 - Adding Mappers for Home APIs Preview 04:46

Lecture 148 - Adding Mappers for Home API Continue Preview 08:29

Lecture 149 - Adding Home API Inside App Service Client Preview 03:17

Lecture 150 - Updating Remote Data Source and Repository with Home API Preview 03:20

Lecture 151 - Adding Home UseCase Preview 02:12

Lecture 152 - Adding Home ViewModel and Rxdart Preview 06:22

Lecture 153 - Add Home ViewModel Inputs and Outputs Preview 05:31

Lecture 154 - Adding Implementation of Home API in ViewModel Preview 07:45

Lec 155 add Home View, Adding Dependency Injection and Binding View to ViewModel Preview 04:06

Lecture 156 - Home View UI Preview 11:02

Lecture 157 - Adding Banner Carousel Widget Preview 13:05

Lecture 158 - Adding Services Widget Preview 11:36

Lecture 159 - Adding Stores Widget Preview 11:46

Lecture 160 - Testing Home Implementation and Fixing Issues Preview 07:11

Lecture 161 - Assignment Requirement Preview 05:31

Lecture 162 - Assignment Solution Keys Preview 03:00

Lecture 163 - Start Caching Implementation Preview 10:43

Lecture 164 - Adding Retrieving Caching Data from Local Data Source Preview 10:20

Lecture 165 - Updating Repository Implementer With Local Data Source Preview 07:20

Lecture 166 - Testing Caching on Home Page Preview 02:10

Lecture 167 - Assignment Requirement - Creating Mock API Preview 03:45

Lecture 168 - Assignment Solution Keys Preview 03:49

Lecture 169 - Adding UI of Settings Screen Preview 12:32

Lecture 170 - Finalising Setting Screen Preview 08:51

Lecture 171 - Start Implementing Localisation Preview 05:26

Lecture 172 - Updating Application Strings Preview 09:03

Lecture 173 - Continue Updating Application Strings Preview 15:50

Lecture 174 - Updating Application Preferences with langauge changes Preview 08:22

Lecture 175 - Update Main function with Localisation Preview 03:02

Lecture 176 - Update Application Class and Settings Screen with localisation Preview 04:21

Lecture 177 - Testing Localisation Preview 11:20

Lecture 178 - How to get source code from github? Preview 03:27

Lecture 179 - How to change in dependency injection instance Preview 15:27

Lecture 180 - Get More Experience Preview 00:58