
Flutter Advance Course: https://rdewan.dev/flutter-advance-course
Learn to set up material route navigation in flutter by creating a home screen and an employee screen, wired with a route generator that maps routes and a no-route screen.
Learn Flutter app navigation by building an add-employee form with a text form field, controller, and validation, plus decorative outline borders and padding.
Implement a date of birth picker in a Flutter app by opening a date picker on tap, setting min and max dates around the current date, and formatting the result.
Fix calendar navigation to return to the selected date and apply readable date formats with the Intel package in Flutter, including adding the dependency and applying the format.
refactor the date picker form field by creating a custom widget with a text editing controller, label, and a callback for input handling.
Create an employee table in Flutter using Drift for SQLite by defining an employee entity with id auto-increment key and columns for username, first name, last name, date of birth.
Create and initialize a Flutter SQLite database by establishing a private open connection, locating the app document directory on Android and iOS, and defining an employee table.
Write queries to get, update, and delete records in a Flutter SQLite database. Retrieve all employees or an employee by ID, and perform insert, update, and delete operations using companions.
Learn to properly dispose a Flutter SQLite database and its TextEditingController instances, closing the database and releasing resources to prevent memory leaks and boost app performance.
Fetch employees from an SQLite database in Flutter using a FutureBuilder, show loading or errors, and display each employee in a card with id, name, and birth date.
Reformat the card design in Flutter by adjusting elevated borders, border side, width, and radius, set text color and padding, and align content to start while testing color variations.
learn to open an edit screen from an employee list in a flutter app using sqlite, pass the employee id through routes, and load the employee data for editing.
Update the employee record by calling the update entity with the employee id and a wrapped drift value, then validate the form and plan to add delete support next.
Add a delete button on the edit page and wire it to a delete function that removes an employee from the Flutter SQLite database using the employee ID.
Implement a get employees stream to return the list of employee data from the employee table as a stream, using a watch mechanism and avoiding async.
Learn how to validate a form in Flutter using a form key and a global key, show error messages for empty fields, and only save when validation passes.
Create a two-tab bottom navigation bar on the home screen, defining bottom navigation bar items with icons and labels, and wiring on tap to update index and switch screens.
Create a single app database instance with the provider package to enforce a global singleton. Wire disposal and manage add, edit, delete, and stream versus future operations.
Create a change notifier to update the UI on data changes, wiring an RSA employee notifier to the database, exposing an employee list via a stream and listening for updates.
Create, update, and delete employees using a ChangeNotifier-driven workflow in Flutter SQLite, adding and retrieving a single employee, handling errors, and notifying listeners.
Explore building a Flutter SQLite database app using ChangeNotifierProxyProvider within a multi provider setup to manage employee data, initialize the database, and dynamically update employee details.
Explain how context.watch and context.select differ in Flutter provider: watch rebuilds on any change, while select rebuilds only when a targeted value changes, boosting performance; add loading indicators.
Learn to use provider's context.read to access a change notifier, listen for updates, and trigger widget rebuilds as employee data changes in a flutter app.
Set up a provider listener using ChangeNotifier to track employee changes (added, updated, deleted) and update the UI when values change, using context.read and provider.of.
Learn to choose between watch, select, and read in provider to control widget rebuilds, watch specific fields, and run callbacks without rebuilding the user interface.
Explore the provider package's consumer widget to access provided data via a builder and rebuild only a portion of the UI, avoiding full widget-tree rebuilds for better efficiency.
Explore the provider selector widget as an efficient alternative to consumer, filtering updates to a selected value and rebuilding only when that value changes, with practical employee data examples.
Add a new active column to the Flutter SQLite database and migrate from version 1 to 2, implementing an integer active flag and updating the data model.
Add an employee form in the Flutter SQLite database course using a checkbox for active status, default false, converting boolean to 1 or 0 when saving.
Add an in-place checkbox to edit an employee's active status, binding a boolean value to the checkbox. Fetch the single employee and use a selector to rebuild the UI.
Fix the checkbox state by using a notifier and selector to rebuild the checkbox when the active value changes, updating context and the employee change notifier.
Explore updating and deleting employees in a Flutter SQLite database, using change notifiers, listeners, and proper disposal to ensure reliable, bug-free data operations.
Fix material banner behavior in a Flutter SQLite database app by wiring employee updates and deletions to a change notifier and triggering banners through a listener.
Learn to fix delete errors in a Flutter SQLite workflow by validating delete results, notifying when no record is deleted, and propagating clear error messages via a change notifier.
Create a new employee address entity with auto-increment id, street and country, and cascade delete; perform a two-to-three migration using before open to enable foreign keys.
Create a new add-address screen in a Flutter SQLite app, wire up form fields and controllers, navigate from the edit employee screen, and save the address linked to an employee.
Learn to add and fetch addresses for employees using flutter sqlite database; support multiple addresses per employee, with an employee address table and id-based queries returning a stream.
Learn to implement a change notifier for employee address updates using Flutter and SQLite, including inserting addresses, retrieving all addresses via a stream, and notifying listeners.
Learn how to add a ChangeNotifierProxyProvider to a Flutter app, wire it into a multi provider, initialize the database, and fetch or add employee address entries.
Validate the address form, build an employee address companion, and insert the employee and address fields (street and country) using drift and provider, then call create with error handling.
Learn how to set up a provider listener for address changes, initialize change notifiers, add listeners, handle errors, and test migrations in a Flutter SQLite app.
Resolve no table found errors in flutter sqlite by increasing the schema version, rerunning migrations, and creating the required table to enable data entry.
This lecture guides building a flutter sqlite database app with an employee address screen, displaying a list of addresses via ListView.builder, and integrating bottom navigation and add address workflow.
Learn how to display an employee's multiple addresses in a Flutter SQLite database app by wiring a selector, fetching by id, and managing listeners and layout fixes.
Demonstrates deleting an employee in a Flutter SQLite app and cascading delete of related addresses via a foreign key, with testing, rebuilding, and troubleshooting an address listener error.
In this Flutter course we are going to learn about local data storage using drift package which help us to create and write SQL query more easily, it internally make use of SQLite 3 and work well both with Android and iOS.
We will able learn about Flutter state management using Provider package which is really popular among Flutter developers. We will cover basic to advance state management using Provider package.
By using provider instead of manually writing InheritedWidget, you get:
simplified allocation/disposal of resources
lazy-loading
a vastly reduced boilerplate over making a new class every time
devtool friendly – using Provider, the state of your application will be visible in the Flutter devtool
a common way to consume these InheritedWidgets (See Provider.of/Consumer/Selector)
increased scalability for classes with a listening mechanism that grows exponentially in complexity (such as ChangeNotifier, which is O(N) for dispatching notifications).
Drift is a reactive persistence library for Flutter and Dart, built on top of sqlite. Drift is
Flexible: Drift let's you write queries in both SQL and Dart, providing fluent apis for both languages. You can filter and order results or use joins to run queries on multiple tables. You can even use complex sql features like WITH and WINDOW clauses.
Feature rich: Drift has builtin support for transactions, schema migrations, complex filters and expressions, batched updates and joins. We even have a builtin IDE for SQL!
Modular: Thanks to builtin support for daos and imports in sql files, drift helps you keep your database code simple.
Safe: Drift generates typesafe code based on your tables and queries. If you make a mistake in your queries, drift will find it at compile time and provide helpful and descriptive lints.
Fast: Even though drift lets you write powerful queries, it can keep up with the performance of key-value stores. Drift is the only major persistence library with builtin threading support, allowing you to run database code across isolates with zero additional effort.
Reactive: Turn any sql query into an auto-updating stream! This includes complex queries across many tables
Cross-Platform support: Drift works on Android, iOS, macOS, Windows, Linux and the web. This template is a Flutter todo app that works on all platforms
Battle tested and production ready: Drift is stable and well tested with a wide range of unit and integration tests. It powers production Flutter apps.