Flutter Advanced Course – Clean Architecture With MVVM

Flutter Advanced Course - Clean Architecture With MVVM

Flutter Advanced Course – Clean Architecture With MVVM

Become a job ready flutter developer.

Language: english

Note: 4.3/5 (616 notes) 21,772 students

Instructor(s): Mina Farid

Last update: 2021-11-20

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

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. 

 

Who this course is for

  • Developer who already has a knowledge in dart and flutter
  • Beginner and Junior developer who wants to master flutter
  • Developer who is searching for advanced topics in flutter
  • Developer who needs to create a structured project with clean architecture and MVVM
  • Developer who took beginner courses and still needs more
  • Developer who needs a course to become a job ready flutter developer

 

Course 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 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?
  • Q&A
    • Lecture 179 – How to change in dependency injection instance
  • Bonus!
    • Lecture 180 – Get More Experience

 

Flutter Advanced Course - Clean Architecture With MVVM

Natural Language Processing [Coursera]

Time remaining or 951 enrolls left

 

Don’t miss any coupons by joining our Telegram group 

Udemy Coupon Code 100% off | Udemy Free Course | Udemy offer | Course with certificate