
Explore managing app state without provider by lifting the counter to MyHomePage, passing it through middle widgets to CounterA and CounterB, and rebuilding the UI with setState on increment.
Learn how provider transforms Flutter state management by enabling easy access to non-widget data and methods through the widget tree, avoiding excessive rebuilds and inversion of control.
Use the provider package to inject a Dog model and access it with Provider.of(context), while learning to prevent rebuilds with listen: false and trigger updates via setState.
ChangeNotifierProvider creates a ChangeNotifier and provides it to widgets, rebuilding the UI when it changes. Access it via Provider.of with listen options for efficient state management and dependency injection.
Use MultiProvider to simplify nesting of multiple change notifier providers, replacing deep widget trees. Explore other provider options like FutureProvider and StreamProvider in the provider package.
Learn how future provider handles asynchronous values with initial data and future resolution, including error handling, via a getBabies example returning int after a delay.
Explore how to use provider with ChangeNotifier, implement Consumer and Builder patterns, handle ProviderNotFoundException, and compare Builder and Consumer approaches in a Flutter app.
Explore provider access via anonymous routes and the value constructor in Flutter. Build a practical example with ChangeNotifierProvider, context, and navigator interactions.
Learn how to implement provider access with named routes in Flutter by wiring a Counter ChangeNotifier through ChangeNotifierProvider.value to MyHomePage and ShowMeCounter, with proper disposal.
Explore provider access in generated routes by configuring onGenerateRoute in MaterialApp, wiring the root and counter routes with ChangeNotifierProvider, and noting global access and ProxyProvider concepts.
Explore how ProxyProvider builds values from other providers and when to use it. Learn that create is optional, update is required, and how ActiveTodoCount demonstrates dependent value updates.
Explore how ProxyProvider and its variants work in flutter by building a counter app with a translations class, testing change notifier integrations, and observing UI updates.
Explore ProxyProvider usage by creating a Translations instance with a changing counter and displaying its title in ShowTranslations, then update with proxy updates so the UI rebuilds on counter changes.
Explore how to display a dialog in Flutter using addPostFrameCallback, avoid showing dialogs in initState, handle overlay and inherited widget changes, and compare context.watch versus context.read.
Shows using addPostFrameCallback to trigger navigation to OtherPage when a ChangeNotifier counter reaches 3, avoiding build-time errors and dialogs, with a nod to BlocListener and ref.listen for similar patterns.
Learn how to handle actions with ChangeNotifier's addListener, register in initState and dispose, and manage an AppState (initial, loading, success, error) via a provider-based text form flow.
Explore the final flutter provider todo app structure, where the header shows item counts and text fields create and search tasks, while tabs filter all, active, and completed lists.
Explore how to manage todo filter state with a ChangeNotifier in Flutter provider by building TodoFilterState and TodoFilter, using initial factory, copyWith, and notifyListeners for All, Active, and Completed tabs.
Create the SearchAndFilterTodo widget with a search field and three filter buttons to show all, active, or completed todos, updating in real time via TodoSearch and TodoFilter.
Display the filtered todo list in ShowTodos using FilteredTodosState and ListView.separated, and enable swipe-to-delete with Dismissible and a showBackground for left and right swipes.
Set the initial ActiveTodoCount and initialFilteredTodos by passing initialActiveTodoCount and initialFilteredTodos through constructors and reading the TodoList, then use ChangeNotifierProvider and ChangeNotifierProxyProvider to manage independent and computed state.
Learn when ChangeNotifierProxyProvider can be replaced by ProxyProvider to build computed state from dependencies, using create and update, and refactor to immutable objects in Flutter provider.
Compare change notifier patterns to state notifier and state notifier provider. See how riverpod-inspired typed state access and proxy providers improve a multi-state app with bar color, counter, and level.
Create a Flutter state_notifier app using BgColorState and BgColor StateNotifier, set up providers with equatable and state_notifier, and toggle color with a changeColor function.
Refactor the todo app using StateNotifier, replacing change notifiers. Implement StateNotifier across TodoFilter, TodoSearch, TodoList, and filtered todos with LocatorMixin and watch locator.
Refactor a Flutter todo app by migrating to StateNotifier providers within a MultiProvider setup, replacing ChangeNotifierProvider and ProxyProvider, and updating the UI components.
Enable data persistence for the todo app with local SQL via SQFlite or remote Firebase, handle async operations with CircularProgressIndicator and dialogs, and implement pagination or infinite scroll.
The course updates the weather API provider to openweathermap after metaweather outages. Metaweather remains available for now and will be moved to the back of the curriculum.
Create and wire up Dart models for a Flutter weather app: DirectGeocoding and Weather with fromJson constructors, equatable, toString, copyWith, and a CustomError model to handle openweathermap data.
Build a weather_api_services.dart client that fetches data from openweathermap using a configured http client and constants.dart. Load environment variables with flutter_dotenv, implement getDirectGeocoding and error handling with WeatherException and httpErrorHandler.
Learn how to structure flutter provider files by separating state and ChangeNotifier into a counter folder with counter_provider.dart and counter_state.dart, using part and part of directives and import rules.
Create a weather provider with weather_state.dart and weather_provider.dart, using WeatherStatus, WeatherState, and WeatherRepository to fetch and manage remote weather data via ChangeNotifier.
Explore how HomePage uses _showWeather with WeatherProvider to display the initial 'Select a city' state, a loading indicator, and an error dialog, then show the city name on success.
Enhance the weather app with pull-to-refresh using RefreshIndicator and AlwaysScrollableScrollPhysics, fetch weather by latitude and longitude via location packages, and retrieve data from metaweather.com on startup.
Discover firebase authentication with provider in Flutter, using email and password for sign up, sign in, and sign out, with status via stream and integration with firebase_core, cloud_firestore, and validators.
Set up firebase for iOS by configuring the iOS bundle identifier in Xcode, adding GoogleService-Info.plist, and registering the app in the Firebase console, while updating Podfile to platform iOS, '10.0'.
Test firebase setup on android and ios by converting the main function to async, initializing firebase with the flutter binding, and enabling email/password authentication with Firestore.
Define a User model and a CustomError model in flutter, with fromDoc parsing, an initialUser factory for pre-login state, and set up db_constants.dart to reference the users collection.
Create a splash page as the app's initial route with a circular progress indicator, routing to home or login after authentication and establishing routes for signin, signup, home, and profile.
Implement an AuthRepository to sign in, sign up, and sign out with firebase_auth, store user profiles in Firestore, and handle errors with CustomError while reacting to auth state changes.
Learn to create auth state management with firebase_auth streams, a dedicated AuthState and AuthProvider, and a ChangeNotifierProxyProvider that updates listeners on user authentication status.
Define SigninState with SigninStatus (initial, submitting, success, error) and error handling; implement SigninProvider (ChangeNotifier) to manage signin via AuthRepository and notify UI, then inject ChangeNotifierProvider in main.dart.
Explore building a flutter sign-in page with provider, email and password fields, form validation, autovalidate mode, focus management, and navigation to signup and firebase sign-in.
create a Flutter signup flow using SignupState and SignupProvider with name, email, and password confirmation, wired in main.dart and validated against Firebase user data.
Build a ProfileRepository, ProfileState, and ProfileProvider using ChangeNotifier to fetch user profiles from Firestore via getProfile, handle errors with CustomError, and reflect updates on ProfilePage.
Build a Flutter profile page with the Provider package to fetch Firestore user data on load, handle errors with addListener, display loading and user info (id, name, email, points, rank).
Discover that Flutter has no official state management, explore multiple approaches like provider, flutter_bloc, get, riverpod, and redux, and prepare to adapt to future upgrades.
Create a weather model in Flutter by parsing json from metaweather, mapping snake_case to camelCase, and implementing Weather.fromJson, Weather.initial, and a CustomError model for robust state management with equatable.
Build a Flutter weather api service using a shared http client and constants host to fetch woeid by city, with weather exception handling and Uri-based http calls.
Create weather_repository.dart with WeatherRepository using WeatherApiServices, implement fetchWeather(city) calling two APIs, handle WeatherException and other errors with CustomError, and test by wiring into main.dart and http.
Create a cross-platform error dialog for a Flutter provider app by implementing an errorDialog function, handling iOS and Android dialogs, and testing with hot restarts and various error messages.
Refactor the weather app to use state notifier with state notifier provider, replacing change notifier across weather, temp settings, and theme providers, using locator mixin and read/write extensions.
Refactor the weather app from change notifier to state notifier, update main.dart and providers to weather state and temp settings state, and adjust home_page.dart addListener with removeListener and fireImmediately.
In the Flutter Provider Essential course, you can learn in depth about Provider, the most basic and widely used among Flutter state management solutions.
If you want to deepen your understanding of the Flutter Provider and put all the concepts into practice, then this course is for you.
The lecture was carefully composed to ensure a balance between theory and practice.
And under the belief that repetition is the most important learning method, whenever there is a new concept, we will test the concept by making a small app, and through real-world apps such as TODO, Weather, and Firebase Authentication app, the concepts will come together comprehensively.
In particular, we will repeatedly practice combinations of different Providers when creating TODO, Weather, and Firebase Authentication apps.
- TODO App (3 Implementations): 1. Combination of ChangeNotifierProvider, ChangeNotifierProxyProvider, 2. Combination of ChangeNotifierProvider and ProxyProvider, 3. StateNotifierProvider
- Weather App (3 Implementations): 1. Combination of ChangeNotifierProvider, ChangeNotifierProxyProvider, 2. Combination of ChangeNotifierProvider and ProxyProvider, 3. StateNotifierProvider
- Firebase Authentication App (2 Implementations): 1. Combination of StreamProvider , ChangeNotifierProvider, and ChangeNotifierProxyProvider, 2. Combination of StreamProvider and StateNotifierProvider
In addition, I will talk about StateNotifier and StateNotifierProvider, which allow you to use the Provider as a more advanced State Management Solution, and there will be opportunities to practice through apps, so you will have even more options.
I can proudly say that this course is the most in-depth course on Flutter Provider.
This is a quick look at everything covered in the course.
- Why Provider is needed
- How to access data in the widget tree using Provider
- How to listen for data changes in the widget tree using ChangeNotifier’s AddListener
- How to use ChangeNotifierProvider, the most used in Provider
- How to use the read, watch, and select extension methods to easily access and listen to data
- MultiProvider, which allows the easy and neat injection of multiple providers into the widget tree
- FutureProvider and StreamProvider, a provider used when you want to listen to continuously changing values and rebuild the widget
- Consumer widget, a kind of convenience widget that makes it easy to access a specific type of Provider
- Selector widget, a type of Consumer widget that enables more detailed control
- Provider Access and value named constructor: anonymous route access, named route access, generated route access, global access
- Provider-to-provider communication: ProxyProvider
- Various errors encountered when using the Provider and how to deal with them
- The addPostFrameCallback method, which is useful when used together with Provider
- How to handle actions such as showDialog or Navigator dot push using ChangeNotifier’s AddListener
- TODO App: 3 implementations through a combination of various providers
- Weather App: 3 implementations through a combination of various providers
- Firebase Authentication App: 2 implementations through a combination of various providers