Sorry, this page is no longer available
We may earn an affiliate commission when you visit our partners.
Course image
Mina Farid

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. 

Enroll now

What's inside

Learning objectives

  • 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
  • Show more
  • Show less

Syllabus

Introduction
About the Course
Content of the Course
Who Can Attend this Course?
Read more

https://github.com/minafarideleia/complete_advanced_flutter

Traffic lights

Read about what's good
what should give you pause
and possible dealbreakers
Focuses on clean architecture and MVVM, which are valuable for building maintainable and scalable Flutter applications, especially in team environments
Covers the implementation of presentation, data, domain, and application layers, which are essential for building robust and well-structured mobile applications
Emphasizes practical experience by building a real project from scratch, allowing learners to apply the concepts and techniques learned throughout the course
Explores the use of various Flutter packages, device information retrieval, and abstract classes, which are useful for enhancing app functionality and platform integration
Teaches the use of stream controllers, RXDart, and stream builders for state management, which are useful for building reactive and dynamic user interfaces
Requires learners to implement UI elements for various screens, including splash, onboarding, login, register, and main screens, which may be time-consuming for some learners

Save this course

Create your own learning path. Save this course to your list so you can find it easily later.
Save

Reviews summary

Practical clean architecture & mvvm in flutter

According to learners, this course is highly effective in teaching Clean Architecture and the MVVM pattern within Flutter. Many found the practical, real-world project approach extremely beneficial for solidifying their understanding of complex concepts and building a structured application from scratch. The instructor is often praised for providing clear explanations and step-by-step guidance. While some users noted challenges with keeping dependencies updated or initial project setup due to evolving Flutter versions, the overall sentiment indicates that the course is a valuable resource for developers aiming to build maintainable and scalable Flutter applications and transition to an experienced developer role.
Instructor explains complex topics well.
"The instructor explains complex topics in a clear and understandable manner."
"Mina Faride is an excellent instructor. His explanations are precise and easy to follow."
"I found the lectures well-paced and the explanations were very clear, even for advanced topics."
"His teaching style made learning architecture patterns much less intimidating."
Hands-on application through a real project.
"The course focuses on building a real-world application, which made it easier to understand how to implement the architecture step by step."
"I appreciated that we built a project from scratch, covering different layers like presentation, domain, and data."
"The hands-on coding and projects are the strongest part of the course for me. Building the project helped reinforce the theoretical concepts."
"Getting to see the architecture implemented in a complete application was incredibly valuable."
In-depth focus on architectural patterns.
"This course provides a solid foundation on Clean Architecture and MVVM in Flutter. I was able to clearly understand the concepts and apply them in my project."
"I learned how to apply Clean Architecture and MVVM properly. It's a great course for anyone who wants to structure their Flutter projects professionally."
"Really helped solidify my understanding of structuring complex Flutter applications using MVVM and Clean Architecture principles."
"Before this, I struggled with structuring my code. Now, I have a clear approach thanks to the explanation of Clean Architecture layers."
Requires updating dependencies for latest Flutter.
"Some parts of the course require updating dependencies to match the latest Flutter version. This can cause some minor issues but is manageable."
"While the core concepts are solid, keeping up with package versions used in the course took some effort."
"Be prepared to spend some time adjusting code for newer package versions, as Flutter moves fast."
"Updating dependencies is necessary, but the architecture principles remain applicable regardless of package versions."
Assumes prior intermediate Flutter knowledge.
"This is definitely an advanced course. Make sure you have a solid grasp of intermediate Flutter before starting."
"As the title suggests, this course is not for beginners. You need prior experience with Flutter."
"If you're new to Flutter, this course might be overwhelming. It dives deep into architecture, not basics."
"Recommended for developers who want to move beyond basic apps and learn professional structuring."

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Flutter Advanced Course - Clean Architecture With MVVM with these activities:
Review Flutter Basics
Solidify your understanding of Flutter fundamentals before diving into advanced architecture concepts. Refreshing basic widgets, layouts, and state management will make grasping MVVM and Clean Architecture easier.
Browse courses on Flutter
Show steps
  • Review Flutter's core widgets like `Column`, `Row`, `Text`, and `Image`.
  • Practice building simple layouts using `Container`, `Padding`, and `SizedBox`.
  • Revisit basic state management techniques like `setState`.
Read 'Flutter Apprentice'
Gain a solid foundation in Flutter development before tackling advanced architectural patterns. This book provides a practical, hands-on approach to learning Flutter.
Show steps
  • Obtain a copy of 'Flutter Apprentice'.
  • Work through the book's examples and exercises.
  • Focus on the sections covering widgets, layouts, and basic state management.
Implement a Simple UI Clone
Practice implementing UI designs to reinforce your understanding of Flutter layouts and widgets. Cloning a simple UI from Dribbble or a similar site will improve your ability to translate designs into code.
Show steps
  • Find a simple UI design on Dribbble or a similar platform.
  • Break down the design into individual widgets and layouts.
  • Implement the UI in Flutter, focusing on achieving pixel-perfect accuracy.
Five other activities
Expand to see all activities and additional details
Show all eight activities
Document Your Learning Journey
Reinforce your understanding by documenting your learning process. Writing blog posts or creating video tutorials will help you solidify your knowledge and share it with others.
Show steps
  • Choose a platform for documenting your learning (e.g., blog, YouTube).
  • Write a blog post or create a video tutorial explaining a specific concept from the course.
  • Share your content with the Flutter community and solicit feedback.
Pair Programming Session
Deepen your understanding of Clean Architecture and MVVM by working with a peer. Pair programming allows you to learn from each other and identify areas where you need more practice.
Show steps
  • Find a classmate or fellow Flutter developer to pair with.
  • Choose a specific task related to Clean Architecture or MVVM.
  • Work together to implement the task, switching roles regularly.
Read 'Clean Architecture' by Robert C. Martin
Understand the underlying principles of Clean Architecture to apply them effectively in Flutter. This book provides a comprehensive guide to building maintainable and testable software.
View Clean Architecture on Amazon
Show steps
  • Obtain a copy of 'Clean Architecture' by Robert C. Martin.
  • Read the book, focusing on the core principles and concepts.
  • Reflect on how these principles can be applied to Flutter development.
Contribute to a Flutter Open Source Project
Apply your knowledge of Clean Architecture and MVVM by contributing to an open-source Flutter project. This will give you practical experience working with real-world codebases and collaborating with other developers.
Show steps
  • Find a Flutter open-source project that aligns with your interests.
  • Identify an issue or feature that you can contribute to.
  • Submit a pull request with your changes, following the project's guidelines.
Refactor an Existing Flutter App
Solidify your understanding of Clean Architecture and MVVM by refactoring an existing Flutter app to use these patterns. This will give you practical experience applying these concepts to a real-world codebase.
Show steps
  • Find an existing Flutter app that you can refactor.
  • Analyze the app's architecture and identify areas for improvement.
  • Refactor the app to use Clean Architecture and MVVM, focusing on separating concerns and improving testability.

Career center

Learners who complete Flutter Advanced Course - Clean Architecture With MVVM will develop knowledge and skills that may be useful to these careers:
Mobile Application Developer
A Mobile Application Developer builds applications for mobile devices, such as smartphones and tablets. This role involves designing, developing, and testing mobile apps, often using cross-platform frameworks like Flutter. This particular course is highly relevant because it focuses on building apps using Flutter, Google's UI toolkit for cross-platform development, and it emphasizes clean architecture and the MVVM pattern, which are critical for creating maintainable and scalable mobile applications. The course provides hands-on experience with real projects, using real-world best practices, and teaches how to structure projects for readability, maintainability, and sustainability. A mobile application developer can use the skills gained from this course to build high-quality apps.
Cross-Platform Developer
A Cross Platform Developer creates applications that run on multiple operating systems such as Android, iOS, web and desktop, using a single codebase. This role requires expertise in cross-platform development frameworks like Flutter. This course provides a strong foundation in developing cross platform applications with a focus on clean architecture and the MVVM pattern. A cross platform developer will learn to structure projects and use maintainable code. The course emphasizes good design principles, and working through a complete, real-world application, which perfectly aligns with the needs of a cross platform developer seeking to build robust, scalable products.
Software Engineer
A Software Engineer designs, develops, and maintains software systems. While this role is broad, this course helps a software engineer focus on mobile app development using Flutter. It emphasizes clean architecture, which is essential for producing maintainable and scalable software. A software engineer can benefit from the course's coverage of MVVM, layers of an application, state management, and dependency injection. This class is useful to any software engineer needing to learn more about modern application architecture and development practices, and to learn from a complete real-world application.
Application Architect
An Application Architect designs the structure and components of software applications, ensuring they're scalable, maintainable, and efficient. This course's focus on clean architecture and MVVM directly relates to the day-to-day work of an application architect. A thorough understanding of these concepts is required for designing robust application structures. The course helps an application architect understand how to build applications that are easy to maintain and scale. The practical experience gained through the course project will be extremely useful for an application architect to better inform their designs.
UI Developer
A UI Developer specializes in building user interfaces for applications. This course provides a substantial foundation in building user interfaces with Flutter, Google's UI toolkit. A UI developer will find the hands on experience with the presentation layer beneficial, including working with application assets, animations, and themes. This course also emphasizes the MVVM pattern, which helps with the structuring and organization of the user interface code. The focus on building a real application gives a UI developer an opportunity to put all these concepts into practice.
Mobile UI Designer
A Mobile UI Designer crafts the visual elements and user experience of mobile applications. While design is not the focus, this course will help a mobile UI designer understand how a real application is built with Flutter, and how a user interface is implemented in code. This can greatly improve their designs by understanding the capabilities and limitations of the technology. The course introduces concepts such as state management and UI implementation, which will provide insight into the process of turning designs into functional interfaces. The course may be useful for a UI designer, as it provides an understanding of the implementation side of the process.
Technical Lead
A Technical Lead guides a development team and ensures the technical quality of software projects. This course can help a technical lead better understand how to build mobile applications using Flutter. They are more informed about the practices and principles behind creating maintainable and scalable apps. The course’s emphasis on clean architecture and the MVVM pattern helps a technical lead make better decisions about architecture. The technical lead can learn how the application layers fit together, so they can make more informed choices for project planning, and offer more effective mentorship to developers.
Full-Stack Developer
A Full Stack Developer works on both front-end and back-end aspects of web applications, and this course can expand them into mobile. While this course focuses on the mobile app development with Flutter, the principles of clean architecture, MVVM, and dependency injection are transferable to other areas of development. A full stack developer will learn how to build and structure a mobile application in a professional and scalable way. The course provides a strong foundation in design principles. A full stack developer can find this course helpful in expanding knowledge of mobile development.
Solution Architect
A Solution Architect translates business needs into technical solutions. They must understand how different parts of a system fit together. They often oversee the technical design and implementation of a project. This course may be useful to a solution architect because it covers the design of a mobile application using Flutter, and how to use design principles such as clean architecture and MVVM. This course gives a solution architect a reference point for designing a robust and maintainable mobile application, and help inform decisions of how these systems should be built. The course may be useful to a solution architect.
Project Manager
A Project Manager plans, executes, and oversees software development projects. While this course is primarily technical, a project manager can gain valuable insight into the development process for mobile applications using Flutter. This helps with planning, team communication, and realistic project timelines. The course's focus on clean architecture and the MVVM pattern provides a project manager a better understanding of the development process for apps and the decisions that are made. The course may help a project manager to understand the scope of work and to communicate with development teams, and manage projects more effectively.
Technical Consultant
A Technical Consultant advises clients on technical solutions and strategies. This course can give a technical consultant a practical understanding of mobile application development with Flutter, which they can leverage when making recommendations to clients. The course's emphasis on the clean architecture, MVVM pattern, and project structure provides valuable insights. The technical consultant can gain a practical understanding of the technical details of mobile app development and communicate more effectively with clients. This course may be useful for a technical consultant.
Quality Assurance Engineer
A Quality Assurance Engineer tests software applications to ensure they meet quality standards. This course is not specifically about testing, but it may be useful for a quality assurance engineer to understand the architecture and structure of a mobile application built with Flutter. This understanding aids in understanding the logic and potential points of failure. The course covers key patterns like MVVM and clean architecture. This awareness can inform the development of more effective test plans and strategies. This course may be useful for a quality assurance engineer as it offers a view into how an application is built.
Technical Writer
A Technical Writer creates documentation for software products. While this course does not directly address technical writing, it can be useful for a technical writer by providing an in-depth understanding of mobile app development with Flutter. A technical writer may benefit from the practical approach of this course, which emphasizes structuring applications with clean architecture and the MVVM pattern. This can help them create more accurate documentation, and understand the technical nuances of software. This course may be useful to someone seeking to write technical documentation.
Product Manager
A Product Manager defines and drives the vision, strategy, and roadmap for a product. Though not directly related, this course may equip them with a better understanding of the technical aspects of mobile application development. They will be more informed about the architecture and structure of a Flutter based application by learning about clean architecture and the MVVM pattern. The course might help a product manager better communicate with the engineering team, and make more informed decisions about product features. The course may be useful to a product manager.
Data Scientist
A Data Scientist analyzes data to extract meaningful insights to inform product decisions. This course does not directly relate to data science concepts. However, this course may still provide some benefit, as data scientists often need to be aware of how different software systems are built and structured. This course may help them understand the inner workings of mobile software and how it interacts with data. Data scientists often make use of data generated by applications and learning how those applications are structured can provide a valuable perspective. The course may be useful for a data scientist, as it touches on how data is used in a mobile application.

Reading list

We've selected two books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Flutter Advanced Course - Clean Architecture With MVVM.
Provides a deep dive into the principles of Clean Architecture. While not Flutter-specific, it provides the theoretical foundation for understanding why Clean Architecture is beneficial. Reading this book will help you understand the underlying principles and apply them effectively in your Flutter projects. This book is commonly used as a reference by software architects and senior developers.
Provides a comprehensive introduction to Flutter development. It covers the fundamentals of building Flutter apps, including widgets, layouts, state management, and navigation. Reading this book before or alongside the course will provide a solid foundation for understanding the more advanced concepts of Clean Architecture and MVVM. It is particularly helpful for those new to Flutter or those who want to refresh their basic knowledge.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Similar courses are unavailable at this time. Please try again later.
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2025 OpenCourser