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
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.