
Learn how to use GitHub source code and attached lectures to practice Flutter MVVM with provider, Riverpod, and BLoC, starting from a starter project and using branch-specific final code.
Explore starting the movies widget in an MVVM setup, building a reusable dynamic widget that shows a cached image, title, rating, genres, and release date with inkwell and error handling.
Implement a movie details screen with a stacked, scrollable user interface featuring a cached image, back button, title, rating, release date, genres, and description.
Implement a Flutter navigation service with a navigate function using a navigator key, push and push replacement, routing to the favorite screen and movie detail screen.
Override the toString method in the MoviesModel to customize what prints for each item, using the override keyword and data values from the model to show movie details.
Implement the movie genres model and api calls within an MVVM flutter setup, creating from json factory, fetching genres, testing in the movie screen, and preparing for repository integration.
Implement a movies repository using the API service to fetch movies and genres, wiring the constructor and methods for clean REST API integration and practical testing.
Pass the movie model to the widgets, and display the correct title, vote average, release date, and backdrop or poster image on the details screen.
Animate the image in the movie detail view by using a hero widget tagged with the image id, caching the image, wrapping in a center, and previewing the animated transition.
Implement the favorite button with setState, store favorites via shared preferences, and learn why this approach fails for app-wide state, paving the way to provider, Riverpod, or BLoC.
Refactor a base flutter ui to remove setstate and support bloc, provider, and riverpod state management. Convert widgets to stateless, modular components and update imports.
Explain provider state management in theory, showing how to access shared state up the widget tree with listener and consumer, and how change notifier triggers UI updates.
Explore how to implement dark and light themes with provider state management in Flutter, toggle themes, and persist the choice with shared preferences for future sessions.
Load the last saved theme with the theme provider, default to light if nothing is stored, and apply dark or light mode by a saved boolean and notify listeners.
Explore how the app connects via mvvm using a movies provider, repository, and api service, then binds data to the ui through the view model and notify listeners.
Implement a favorites provider for the movie screen with change notifier, managing a MovieModel favorites list with add or remove and persisting to shared preferences via json encode and decode.
Implement a favorite feature with provider and consumer widgets to add or remove movies from favorites, reflect changes with icons and colors, and fetch favorites on app restart.
Discover Riverpod state management as a modern alternative to provider, covering theme handling, dependency injection, and multi-provider usage, with pub.dev setup and package installation.
Recap how we implemented the theme provider with riverpod state management, using theme enums, shared preference, and a provider scope to toggle dark and light themes via a consumer widget.
Master Riverpod's consumer widget with a builder using context and ref to access href, avoid unnecessary rebuilds, and improve performance by splitting code into smaller widgets.
Define a dedicated movies state class for the River pod package, initializing current page, movies list, genres, and loading and error flags. Create a constructor to initialize the state.
Implement a splash screen with a future builder in a Riverpod MVVM setup, wire a movies provider, and debug infinite loops.
Test error handling in the splash screen by turning off wifi, restarting the app, and retrying after connectivity returns to verify resilience using Riverpod.
Explore the Riverpod logging observer to track provider lifecycle events such as did add, update, and dispose, and implement an observer to log stream and theme provider updates for debugging.
Finalize a theme provider in Flutter MVVM with Provider, Riverpod, and Bloc by wiring MultiProvider, building a BlocBuilder, and applying light or dark themes.
Implement the favorites bloc: add, remove, load, and clear favorites, save to shared preferences via json, and emit updated states based on events.
Dive into the depths of Flutter's MVVM architecture with different state managements in this comprehensive course designed for intermediate to advanced and expert developers. Learn how to build a dynamic movie app that interacts with a REST API, manages local favorites, and incorporates genre mapping for enhanced functionality with Dark and Light themes. This course will guide you through the journey of implementing MVVM with different state management strategies—setState, Provider, Riverpod, and BLoC—each covered in dedicated sections to provide you with a robust understanding of each approach.
Prerequisites:
Basic knowledge of programming
Basic familiarity with Flutter Widgets and Dart
Basic understanding of REST APIs is a plus, but we cover this in detail
Enthusiasm for learning state management in-depth
Macbook or Windows to develop
Any preferred IDE (such as Android Studio or IntelliJ IDEA), or a preferred text editor (like VS Code)—just not Microsoft Word!
Recording Equipment:
Video Editing Software: Camtasia 2023
Microphone: Blue Yeti X
This setup ensures that all course videos are clear and professionally produced.
What You Will Learn:
Implementing MVVM architecture in Flutter for scalable app development
Connecting to a REST API to fetch and display movie data
Local data management for user favorites
Advanced state management techniques with setState, Provider, Riverpod, and BLoC
Theme management in Flutter apps for dynamic light and dark modes
Course Structure:
Duration: Approximately 12 hours of content
MVVM Section, UI section, API section, and different sections for the state managements
Lecture length: each lecture is around 10 min
What to Expect After This Course:
Proficiency in using MVVM architecture for complex Flutter applications
Deep understanding of various state management techniques and when to use them
Skills to design and manage both themes and local databases in Flutter
Enhanced capability to handle real-world Flutter projects that require advanced state management and API integration
Limitations and Notes:
The course code works for all platforms supported by Flutter
The course project is designed for portrait mode responsiveness.
Resources:
Complete source code for the movie app for each state management explained in the course (setState, Provider, Riverpod, BLoC)
Step-by-step guides on implementing each feature
Access to slides and additional reading materials