
Learn clean architecture with MVVM in Flutter, building presentation, domain, and data layers, with stream-based state management and localization for English and Arabic RTL screens.
Targeting beginners and junior developers, this Flutter course helps you master Flutter with clean architecture and MVVM, while exploring advanced topics and MVP-style patterns.
https://github.com/minafarideleia/complete_advanced_flutter
Create a color manager in the presentation layer and an extension to convert hex color strings to color objects, enabling primary, dark gray, gray, and light colors across the app.
Create a values manager to centralize margins, padding, and sizes in the presentation layer by introducing AppMargin, AppPadding, and AppSize with static constants to avoid hardcoded values.
Create a theme manager in a Flutter clean architecture setup, configure a color manager with primary colors, and apply a cohesive theme across the app using MaterialApp.
Develop and apply a card theme by configuring primary and main colors, defining elevation and shadow, and adjusting margins and attributes within a core theme in a clean MVVM architecture.
Configure an app bar theme by setting primary and orange colors, elevation, and spacing, while tuning color management and typography (font size 16) in a clean MVVM architecture.
Apply a comprehensive text theme across the app by defining headline, subtitle, and body styles, using a color manager and font sizes, so changes propagate to all widgets.
Apply a text form field theme for the tickets form, defining borders, focus states, colors, and reusable styles for labels and disabled states.
Learn how to add icons to a Flutter project by organizing assets, naming conventions, and declaring assets for multiple screen densities to ensure consistent icon rendering.
Implement a splash screen in a Flutter app using MVVM clean architecture, configure the initial route, and manage assets with color and image managers in the presentation layer.
Add a timer to the splash screen to delay two seconds before navigating to the onboarding screen, using a private delay function and a navigator in a Flutter MVVM setup.
Implement a four-slide onboarding screen in a Flutter app with images and data, swipe navigation, and a list-driven flow, aligned with clean MVVM architecture.
Learn to implement a clean, scalable onboarding screen in Flutter using MVVM, with a reusable UI layout, onboarding images, subtitles, spacing, and centralized subtitle styles via a scene manager.
Implement the onboarding screen with a multi-panel flow, integrating assets and images, titles, and navigation controls (left/right arrows) to create a guided user experience.
Implement an onboarding screen with a bottom sheet, include schedule and science sections, use the orange color from the color manager, and adjust elevation and skip button behavior.
Explain how MVVM separates UI from business logic, placing validation and API calls in the view model, enabling data flow from local or remote sources and reusable views.
Create a base view model for Flutter mvvm by defining an abstract base model with input and model output for reuse across views, including initialization and dispose lifecycle methods.
Implement onboarding with an MVVM view model, defining inputs and outputs and handling actions like go next, previous, and swipe to drive state via stream controllers to the view.
Discover how stream controllers connect a view model to the view using streams and sinks, with sync inputs and multiple listeners for features like password validation.
Implement onboarding viewmodel logic by handling inputs and a slider view object through a stream, validating data, mapping updates, and rendering the updated slider in the onboarding flow.
Bind the onboarding viewmodel to the view in a Flutter MVVM architecture, wiring data from the model to the view through display logic and content widgets.
Create a mock api backend for a Flutter app, enabling login with email, password, and device data; return a json response with status, message, and user data.
Explore how the data layer handles api responses, including status, message, and context. Implement automatic serialization to convert responses to json.
In the data layer, add an api service client using Retrofit, enabling response serialization and streamlined integration with the service layer in a clean mvvm architecture.
Explore a new concept in programming that treats a function as a two-player game, where good data responses and successful outcomes guide implementation insights.
Explore domain layer design in clean architecture by adding a repository, defining request and failure handling, and implementing network responses for robust MVVM workflows.
Learn how to implement the remote data source in the data layer for Flutter clean architecture with MVVM, wiring the service client and handling requests, responses, and loading.
Learn to add a network data checker in the data layer to verify internet connectivity before network requests in a Flutter MVVM clean architecture setting.
Implement a repository in the data layer by wiring a remote data source, handling future calls, and checking internet connectivity to safely fetch and convert responses into a domain object.
Explore the data layer's response codes, mapping statuses like 200, 201, 204, 400, 403, and 404 to outcomes, including success, no content, and errors.
Explore the data layer in clean architecture with mvvm by adding response messages for data requests, handling success and error states, and addressing connectivity with try again later prompts.
Implement and centralize an error handler class in the data layer to manage API and local data source responses, map status codes to messages, and provide default fallbacks.
Implement the Dio factory in the data layer, configure request headers for language and authorization, and handle default language selection to ensure localized responses.
Enable the Dio logger interceptor in the data layer to capture and inspect network requests and responses, revealing app traffic and aiding debugging.
Update the Dio factory with app preferences to honor language settings and ensure the response content remains in English across locale differences.
implement a base use case in the domain layer for flutter clean architecture with MVVM, defining inputs, outputs, and repository interactions.
Explore how the domain layer implements the login use case within a clean architecture using MVVM in Flutter, wiring view models to repository data and authentication flows.
Implement a login viewmodel with streams and validation, handling username and password inputs, enabling the login button when credentials are valid, and defining three action functions for user interactions.
Configure two stream controllers in the login view model to support multiple subscribers, implement validation, and wire streams through the view to enable reactive user name input handling.
Add a login use case to the login view model to validate a username and password, enable the login button, execute the use case, and handle success or failure.
Design a Flutter login view user interface featuring a container, image assets, and form fields for username and password, with scrolling and clear input controls.
Continue refining the login view UI in the flutter advanced course, wiring the username field, sign up button, and validation logic with a service and snapshot.
Add a stream controller to manage the login button in a clean architecture with MVVM setup, validating username and password through streams before enabling the button.
Test the login user interface by validating username input, ensuring the login button enables, and testing across emulators. Refine visuals with image usage, splash screen, and container layout for consistency.
Add forgot password and register texts to a flutter UI, align elements, adjust colors, and manage usernames and passwords on the login screen.
Explore how to implement dependency injection in a Flutter app module by registering services, creating lazy singletons, and injecting dependencies to decouple sources and data layers.
Add dependency injection to the login module within a clean MVVM architecture by registering factories and repositories, and controlling instance scope to create fresh instances per call.
Explore how to implement dependency injection within a clean MVVM architecture in flutter, reducing coupling by injecting dependencies from a source rather than directly instantiating them, with practical examples.
Explore implementing a state renderer in Flutter with MVVM clean architecture, building a dialogue featuring an animated image and message in a responsive layout with rounded rectangle borders.
Implement state renderer for the Flutter app by building dynamic loading and content states, using animated images, messages, and item lists to render dialogue and content.
learners explore adding a state renderer implementation within a Flutter clean architecture using MVVM, covering animated states, asset management, search and filter flows, error handling, and resource updates.
Learn to implement a loading state with a state renderer in a clean MVVM architecture by defining an abstract state, overriding its message, and wiring full-screen loading.
The lecture demonstrates implementing a state renderer in a flutter clean architecture with MVVM, handling error, empty, and content states, and displaying dynamic messages when data is unavailable.
Implement error, empty, and content states within a clean architecture MVVM setup, showing how to return content or error messages and manage state transitions.
Add an input stream controller inside the base viewmodel to sync input with state, using a flow state to drive the view content—loading, error, or content—by subscribing and emitting changes.
Update the login view using a flow state controller in a clean MVVM architecture, wiring state streams and data snapshots to drive the screen content and loading state.
Navigate debugging and testing across emulators and real devices as you update a mock stub in a Flutter clean architecture setup, fix issues, and ensure a consistent response.
Navigate to the main screen after a login success within a clean architecture with MVVM in Flutter, managing user data, views, and navigation flow.
Update routes navigation with app preferences to preserve user state across onboarding and screen transitions, guiding how screens are built and navigated.
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.