Master Flutter App Development: Clean Architecture & MVVM (Arabic)
What you will learn:
- Clean Architecture Design Pattern
- MVVM (Model-View-ViewModel) Pattern
- ViewModel Input/Output Management
- Base ViewModel and Base UseCase Implementation
- Dependency Injection, Routes Management, and Application Class Structure
- Extension Functions and Shared Functionality
- Remote and Local Data Sources
- API Service Client (Retrofit-like)
- API Calls and Data Handling
- Logger Interceptor for Network Requests
- Caching API Responses (Local Data Source)
- JSON Serialization and Annotations
- Repository Implementation and Patterns
- Data Mapping (Converting responses into Models)
- Null Safety
- Creating Mock APIs
- Domain Models, Repositories, and UseCases
- Either Concept (Success/Failure Handling)
- Data Classes
- UI Development (Various Screens)
- State Renderers (Full Screen and Popup)
- State Management (Streams, RX Dart, Stream Builder)
- Localization (Arabic and English)
- RTL/LTR Support
- Asset Management (Images, Icons)
- Theme, Style, Font, and Color Management
- JSON Animations
- SVG Image Integration
- Flutter Packages
- Device Information Retrieval
- Abstract Classes
Description
Unlock your potential as a Flutter developer with this comprehensive Arabic course. Designed to bridge the gap between beginner and expert, you'll master Clean Architecture and the Model-View-ViewModel (MVVM) design pattern. Learn through clear, concise explanations and build a real-world application from scratch, covering everything from the presentation layer to data management.
This course provides a structured approach to Flutter development, emphasizing code organization, maintainability, and scalability. You'll learn to build a robust application with distinct layers – presentation, data, and networking – ensuring clean, efficient code. We’ll create multiple interfaces, including a captivating splash screen, intuitive onboarding, secure login/registration, and a user-friendly settings screen. You'll implement language switching functionality, making your app accessible to a wider audience. Practical examples and hands-on projects will solidify your understanding.
By the end, you'll possess the skills to handle complex projects, confidently navigate job interviews, and build a successful career in mobile app development. This course includes numerous interactive exercises and a supportive community for a rich learning experience. Gain in-depth knowledge of efficient programming practices, best industry standards and build a professional portfolio to showcase your skills.
Curriculum
Introduction
This introductory section sets the stage for the course. Lecture 1 provides an overview of the course's structure and objectives. Lecture 2 delves into the detailed course curriculum, outlining each module and its learning outcomes. Lecture 3 clarifies who will benefit most from this advanced Flutter training, highlighting the target audience and prerequisite knowledge.
Presentation Layer - Resources Manager
This section establishes the foundation for efficient resource management within your Flutter application. You'll learn how to create and effectively utilize managers for Colors, Fonts, Values, Styles, and Themes. You'll master the art of structuring your application class, and create a robust routes manager for seamless navigation. We also explore best practices for incorporating images and icons into your projects. Lectures cover creating each manager and implementing them in a cohesive way to add card theme, app bar theme, button theme, text theme, and text form field theme. You will learn how to add routes manager and strings manager and how to select image sizes in Flutter and the best way to add icons to a Flutter project.
Presentation Layer - Splash Screen
This section guides you through the development of a visually appealing and functional splash screen. You'll learn to create the basic structure of the splash screen and add a timer to control its duration.
Presentation Layer - OnBoarding Screen
This section is dedicated to building a comprehensive onboarding experience for your users. Lectures guide you through the process of adding assets for the onboarding screen, and implementing it in multiple parts, enhancing user engagement and app usability. You'll learn how to incorporate animations and other engaging elements.
Presentation Layer - MVVM
Dive deep into the Model-View-ViewModel (MVVM) architectural pattern. Understand its core principles, create a base ViewModel, and implement MVVM for your onboarding screen. Learn the power of Stream Controllers for managing data flow and binding your ViewModel to the view. You will learn what is MVVM, how to create base viewmodel, and onboarding screen viewmodel, what is stream controller, and how to add stream controller to onboarding viewmodel, the logic implementation, and binding viewmodel to view and how to receive data in view from viewmodel.
Data / Domain layers - Clean Architecture Design Pattern
Master Clean Architecture, a crucial design pattern for building scalable and maintainable applications. This section covers creating mock APIs, building the data and domain layers, using JSON serialization, and implementing a Repository pattern using Retrofit-like architecture. You'll learn about the Either concept for handling success and failure states, and apply null safety principles. Also add dependencies for the network layer, APIs responses, and API service client (Retrofit), and create Models, implement extensions functions, mappers, and applying null safety. You will learn what is clean architecture, how to create mock apis, how to create models, repository, request and failure and applying error handling.
Presentation Layer - Login Flow
Build a secure and user-friendly login flow, integrating the knowledge gained from previous sections. You'll create a Login ViewModel, incorporate streams, implement data classes, utilize UseCases, and bind the ViewModel to the view. This section emphasizes building a clean, well-organized UI and handling user input.
Application Layer - Dependency Injection
Learn to implement dependency injection for efficient and organized code. This section focuses on setting up dependency injection instances and modules, and demonstrates how to leverage them effectively throughout your application. It will show you how to add dependency injection instances and how to use it.
Presentation Layer - State Renderer
This section deals with implementing state renderers for displaying different application states such as loading, error, empty, and content. It covers various state renderer types and how to effectively manage application states using stream controllers.
Presentation Layer - Handling Pre Login Flow
Handle the actions after successful login, including redirecting to the main screen and updating route navigation using application preferences.
Assignment #1 - Forgot Password Flow
This assignment challenges you to build a complete forgot password functionality. This section provides assignment requirements, solution keys, and links to source code.
Assignment #2 - Adding Success State Renderer
This assignment extends your understanding of State Renderers by adding a success state. This section provides assignment requirements and solution keys.
Data / Domain Layers - Registration Flow
This section focuses on adding the back-end and front-end for the registration flow. You will build the API, models, repository, and other components for the registration process.
Presentation Layer - MVVM - Register Flow
This section implements the registration flow using the MVVM pattern. You will build the view model, handle user input, validation, and integrate with the back-end.
Presentation Layer - Main Flow
Implement the main view of the application, incorporating various pages and screens built in previous modules.
Data / Domain Layers - Home Flow
Construct the backend components for the home screen, including APIs, models, repositories, and use cases.
Presentation Layer - MVVM - Home Flow
This section integrates the home flow with the MVVM architecture, managing data flow and UI updates efficiently.
Assignment #3 - Refactor Home
Improve the design and structure of the home screen based on the given requirements.
Data Layer - Caching (Local Data Source)
Implement local data caching to improve application performance and reduce reliance on network requests.
Assignment #4 - Store Details Flow
Develop the complete flow for displaying store details, including API integration and UI implementation.
Presentation Layer - Setting Screen
Design and build the settings screen, allowing users to customize application preferences.
Presentation Layer - Localisation
Implement multi-language support for your Flutter application, making it accessible to a wider user base.
Source Code
This section provides information on accessing the complete source code of the application built in the course.
Bonus Lecture
An extra lecture covering additional topics or advanced techniques related to Flutter development.