• Post category:StudyBullet-3
  • Reading time:22 mins read


Become a job ready flutter developer.

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.


Get Instant Notification of New Courses on our Telegram channel.


English
language

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