Mô tả

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. 

Bạn sẽ học được gì

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

Yêu cầu

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

Nội dung khoá học

25 sections

Introduction

3 lectures
About the Course
01:07
Content of the Course
04:21
Who Can Attend this Course?
00:42

Presentation Layer - Resources Manager

16 lectures
Lecture 4 - Creating Application Class
13:36
Lecture 5 - Creating Colors Manager
11:47
Lecture 6 - Creating Fonts Manager
10:22
Lecture 7 - Creating Values Manager
03:37
Lecture 8 - Creating Styles Manager
10:05
Lecture 9 - Creating Theme Manager
06:04
Lecture 10 - Adding Card Theme
02:13
Lecture 11 - Adding App Bar Theme
03:56
Lecture 12 - Adding Button Theme
06:05
Lecture 13 - Adding Text Theme
05:29
Lecture 14 - Adding Text Form Field Theme
11:32
Lecture 15 - Start Adding Routes Manager
09:24
Lecture 16 - Finish Adding Routes Manager
07:47
Lecture 17 - Adding Strings Manager
03:16
Lecture 18 - How to Select Image Sizes in Flutter?
07:06
Lecture 19 - Best Way to Add Icons to Flutter Project
06:27

Presentation Layer - Splash Screen

5 lectures
Lecture 20 - Start Splash Screen
08:23
Lecture 21 - Adding Timer to Splash Screen
06:13
Lec-22 Change App Name,Laucher Icon and Remove White Screen at Start for Android
15:06
Lec-23 Change App Name,Laucher Icon and Remove White Screen at Start for Ios #1
08:26
Lec-24 Change App Name,Laucher Icon and Remove White Screen at Start for Ios #2
05:18

Presentation Layer - OnBoarding Screen

8 lectures
Lecture 25 - Adding Assets for Onboarding Screen
08:47
Lecture 26 - Implementation Onboarding Screen Part1
11:14
Lecture 27- Implementation Onboarding Screen Part2
08:14
Lecture 28 - Implementation of Onboarding Screen Part3
09:22
Lecture 29 - Implementation of Onboarding Screen Part4
15:16
Lecture 30 - Implementation of Onboarding Screen Part5
10:10
Lecture 31 - Implementation Onboarding Screen Part6
03:11
Lecture 32 - Surprise
01:44

Presentation Layer - MVVM

9 lectures
Lecture 33 - What is MVVM?
04:56
Lecture 34 - Creating Base ViewModel
05:03
Lecture 35 - Creating Onboarding Screen ViewModel
09:24
Lecture 36 - What is Stream Controller?
03:01
Lecture 37 - Adding Stream Controller to Onboarding Viewmodel
07:00
Lecture 38 - Onboarding Viewmodel Logic Implemenation
11:41
Lecture 39: Continue Onboarding Viewmodel Logic Implemenation
03:25
Lecture 40 - Binding Onboarding Viewmodel to View
05:18
Lecture 41 - How to Recive Data in View From Viewmodel?
11:53

Data / Domain layers - Clean Architecture Design Pattern

29 lectures
Lecture 42 - What is Clean Architecture?
04:52
Lecture 43 - Creating Mock APIs
09:13
Lecture 44 - Data Layer - Adding Dependencies for network layer
04:51
Lecture 45 - Data Layer - Adding APIs Responses
09:54
Lecture 46 - Data Layer - Json Serialization
12:57
Lecture 47 - Data Layer - Add API Service Client (Retrofit)
09:12
Lecture 48 - Domain Layer - Creating Models
04:19
Lecture 49 - Application Layer - Creating Extensions Functions
04:38
Lecture 50 - Data Layer - Creating Mappers and Applying Null Safety
11:49
Lecture 51 - Either Conecpt
02:28
Lecture 52 - Domain Layer - Adding Repository, Request and Failure
07:15
Lecture 53 - Data Layer - Remote Data Source
06:46
Lecture 54 - Data Layer - Adding Netowrk Data Checker
06:14
Lecture 55 - Data Layer - Adding Repository Implementer
12:35
Lecture 56 - Data Layer - Adding Data Source Enum
05:22
Lecture 57 - Data Layer - Adding Responses Codes
06:26
Lecture 58 - Data Layer - Adding Responses Messages
03:57
Lecture 59 - Data layer - Adding Extension on Data Sources
06:06
Lecture 60 - Data Layer - Adding Error Handler Class
14:19
Lecture 61 - Data Layer - Applying ErrorHandler on Repository Implementer
07:10
Lecture 62 - Data Layer - Adding Dio Factory
08:50
Lecture 63 - Data Layer - Adding Dio Logger Interceptor
05:15
Lecture 64 - Presentation Layer - Adding Language Manager
04:08
Lecture 65 - Application Layer - Adding Application Preferences
06:41
Lecture 66 - Update Dio Factory with App Preferences
02:16
Lecture 67 - Domain Layer - Adding Base UseCase
04:37
Lecture 68 - Domain Layer - Adding Login UseCase
04:25
Lecture 69 - Domain Layer - Getting Device Info Part 1
06:34
Lecture 70 - Domain Layer - Getting Device Info Part 2
03:56

Presentation Layer - Login Flow

12 lectures
Lecture 71 - Adding Login Viewmodel
09:17
Lecture 72 - Adding Streams to Login ViewModel
07:30
Lecture 73 - Adding Data Classes to Login ViewModel
09:02
Lecture 74 - Usage of Data Classes
01:56
Lecture 75 - Adding Login UseCase to Login ViewModel
05:18
Lecture 76 - Binding Login ViewModel to Login View
05:55
Lecture 77 - Login View UI
13:22
Lecture 78 - Login View UI Continue
07:40
Lecture 79 - Finalising Login UI
03:43
Lecture 80 - Adding Stream Controller For Login Button
10:35
Lecture 81 - Testing Login UI Implementation
05:14
Lecture 82 - Adding Forgot Pasword and Register Texts
07:00

Application Layer - Dependency Injection

4 lectures
Lecture 83 - Adding Dependency Injection App Module
10:52
Lecture 84 - Add dependency injection Instances
10:13
Lecture 85 - Add Dependency Injection Login Module
05:59
Lecture 86 - How to Use Instance of Dependency Injection?
02:40

Presentation Layer - State Renderer

22 lectures
Lecture 87 - Make App Makes HTTP Request (NOT only HTTPs)
03:51
Lecture 88 - Testing Login API
07:09
Lecture 89 - Showing Popup State Renderer
02:04
Lecture 90 - Showing Full Screen State Renderer
02:59
Lecture 91 - Adding State Renderer Implementation
12:29
Lecture 92 - Adding State Renderer Implementation Part 2
05:51
Lecture 93 - Adding State Renderer Implementation Part 3
08:05
Lecture 94 - Adding State Renderer Implementation Part 4
06:25
Lecture 95 - Adding State Renderer Implementation Part 5
07:50
Lecture 96 - Adding State Renderer Implementation Part 6
05:12
Lecture 97 - Adding State Renderer Implementation Part 7
07:04
Lecture 98 - Applying State Renderer - Loading State
05:29
Lecture 99 - Applying State Renderer - Error State - Empty State - Content State
04:31
Lecture 100 - Adding Extension on State Renderer implementer
05:00
Lecture 101 -Adding Implementation for Loading State Case
08:41
Lect 102 Adding Implementation for (Error State-Empty State-Content State) Cases
02:58
Lecture 103 - Handling showing many popup dialogs
05:26
Lecture 104 - Adding Input Stream Controller Inside Base ViewModel
07:54
Lecture 105 - Updating Login View with Flow State Controller
06:05
Lecture 106 - Updating Login ViewModel with Flow State Controller
06:29
Lecture 107 - Testing State Renderer Implementation
02:19
Lecture 108 - Updating Login API in Mock Stub
02:21

Presentation Layer - Handling Pre Login Flow

3 lectures
Lecture 109 - Handling Login Success Result to Go to Main Screen
06:57
Lecture 110 - Updating Routes Navigation with App Prefernces
11:32
Lecture 111 -Testing Navigation from Splash Screen
01:50

Assignment #1 - Forgot Password Flow

4 lectures
Lecture 112 -Assignment #1 Requirement and Creating Mock API
1 question
Lecture 112 -Assignment #1 Requirement and Creating Mock API
04:21
Lecture 113 -Assignment #1 Solution Keys
05:29
Lecture 114 -Getting Assigment #1 source code from githup
03:55

Assignment #2 - Adding Success State Renderer

3 lectures
Lecture 115 -Assignment Requirement
01:43
Lecture 116 -Assignment #2 Solution Keys
02:53
Lecture 117 -Creating Pull Request for Assigment #2 Solution
01:09

Data / Domain Layers - Registration Flow

3 lectures
Lecture 118 - Createing Mock API for Register Screen
05:33
Lecture 119 - Adding Register API Interface and Repository
05:34
Lec-120 Add Register API Call in Repository Impl, Remote Data Source and Usecase
06:29

Presentation Layer - MVVM - Register Flow

20 lectures
Lecture 121 - Adding Stream Controllers to Register ViewModel
05:20
Lecture 122- Adding Register ViewModel Input and Output
08:51
Lecture 123 - Implementations of Register ViewModel Inputs and Outputs
08:06
Lecture 124 - Adding Streams Implementations in Register ViewModel
07:16
Lecture 125 - Adding Register View Object Data Class
03:43
Updating Register View Object Data Class
10:54
Lecture 127 - Applying Validation to Register ViewModel
08:09
Lecture 128 - Add Register API Implementation Inside ViewModel
04:21
Lecture 129 -Binding Register ViewModel to View and Adding Dependencey Injection
08:29
Lecture 130- Adding Stream Builders Inside Register View
04:18
Lecture 131- Adding UI for Register Screen
04:57
Lecture 132- Adding UI for Register Screen Part 2
13:07
Lecture 133- Adding UI for Register Screen Part 3
04:29
Lecture 134- Adding UI for Register Screen Part 4
12:21
Lecture 135- Adding UI for Register Screen Part 5
10:04
Lecture 136- Adding UI for Register Screen Part 6
02:55
Lecture 137- Fixing UI Implementation for Register Screen
08:01
Lecture 138- Testing Register Flow
04:11
Lecture 139- Finalising Register Flow
11:41
Lecture 140- Navigate to Main Screen
03:24

Presentation Layer - Main Flow

3 lectures
Lecture 141- Adding Pages Inside Main View
10:22
Lecture 142- Finalising Adding Pages inside Main View
07:08
Lecture 143 - Testing Pages Inside Main View
02:38

Data / Domain Layers - Home Flow

8 lectures
Lecture 144 - Creating Mock API for Home Screen
06:07
Lecture 145 - Adding Home API Responses
10:01
Lecture 146 - Adding Home API Models
04:20
Lecture 147 - Adding Mappers for Home APIs
04:46
Lecture 148 - Adding Mappers for Home API Continue
08:29
Lecture 149 - Adding Home API Inside App Service Client
03:17
Lecture 150 - Updating Remote Data Source and Repository with Home API
03:20
Lecture 151 - Adding Home UseCase
02:12

Presentation Layer - MVVM - Home Flow

9 lectures
Lecture 152 - Adding Home ViewModel and Rxdart
06:22
Lecture 153 - Add Home ViewModel Inputs and Outputs
05:31
Lecture 154 - Adding Implementation of Home API in ViewModel
07:45
Lec 155 add Home View, Adding Dependency Injection and Binding View to ViewModel
04:06
Lecture 156 - Home View UI
11:02
Lecture 157 - Adding Banner Carousel Widget
13:05
Lecture 158 - Adding Services Widget
11:36
Lecture 159 - Adding Stores Widget
11:46
Lecture 160 - Testing Home Implementation and Fixing Issues
07:11

Assignment #3 - Refactor Home

2 lectures
Lecture 161 - Assignment Requirement
05:31
Lecture 162 - Assignment Solution Keys
03:00

Data Layer - Caching (Local Data Source)

4 lectures
Lecture 163 - Start Caching Implementation
10:43
Lecture 164 - Adding Retrieving Caching Data from Local Data Source
10:20
Lecture 165 - Updating Repository Implementer With Local Data Source
07:20
Lecture 166 - Testing Caching on Home Page
02:10

Assignment #4 - Store Details Flow

2 lectures
Lecture 167 - Assignment Requirement - Creating Mock API
03:45
Lecture 168 - Assignment Solution Keys
03:49

Presentation Layer - Setting Screen

2 lectures
Lecture 169 - Adding UI of Settings Screen
12:32
Lecture 170 - Finalising Setting Screen
08:51

Presentation Layer - Localisation

7 lectures
Lecture 171 - Start Implementing Localisation
05:26
Lecture 172 - Updating Application Strings
09:03
Lecture 173 - Continue Updating Application Strings
15:50
Lecture 174 - Updating Application Preferences with langauge changes
08:22
Lecture 175 - Update Main function with Localisation
03:02
Lecture 176 - Update Application Class and Settings Screen with localisation
04:21
Lecture 177 - Testing Localisation
11:20

Source Code

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

Q&A

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

Bonus!

1 lectures
Lecture 180 - Get More Experience
00:58

Đánh giá của học viên

Chưa có đánh giá
Course Rating
5
0%
4
0%
3
0%
2
0%
1
0%

Bình luận khách hàng

Viết Bình Luận

Bạn đánh giá khoá học này thế nào?

image

Đăng ký get khoá học Udemy - Unica - Gitiho giá chỉ 50k!

Get khoá học giá rẻ ngay trước khi bị fix.