
Learn the essentials of dart and flutter to build mobile apps, with hands-on coding from ground zero, guided by a seasoned trainer who stresses practice, consistency, and problem solving.
Explore Flutter and Dart to build cross-platform apps from a single code base, mastering widgets, state management, navigation, and REST APIs with SQLite and Firebase.
Learn Dart basics and object oriented programming concepts with syntax, data structures, and features, see Dart in action with Flutter, using dart pad to run hello world from main method.
Begin with hello world in Dart Pad using the online editor. Practice the main function as the entry point and print output in the browser through Dart and Flutter basics.
Explore Dart's number types by declaring integer and double variables, assigning values like age and pi, printing results, and understanding how int, double, and num relate as reference types.
Explore how the string type works in Dart, then master string interpolation by using the dollar sign and curly braces to print variables and expressions.
Explore boolean types in Dart with bool, and compare var and dynamic: var infers a fixed type, while dynamic can change runtime type.
Explore final and const in Dart, learning how final prevents reassignment and how const makes a value and its contents immutable at compile time, with pi and list examples.
Explore common operators in Dart, including arithmetic operators for addition, subtraction, multiplication, division, and remainder, and how doubles, integers, and a unary operator truncate decimals, plus comparison and logical operators.
Explore using if, else, and else if statements with logical operators to classify a temperature as very cold, cold, normal, hot, or very hot, ensuring only one block runs.
Learn how to replace long if-else chains with switch statements and switch expressions in Dart, including cases, break, default, and how to return values from a switch expression.
Explore lists, maps, and sets as data structures, focusing on lists with indexing and length, and practice add, remove, insert, and converting between lists and strings.
Explore maps as key-value data structures, access items by keys, add entries, and print keys and values, noting Json responses often come as maps.
Define a set using curly braces and a type, show that sets prevent duplicates, and demonstrate converting lists to sets with set.of and back with list.from to obtain unique numbers.
Learn how to loop in Dart by using for, enhanced for loop, while, and do while to iterate lists and maps with indexing starting at zero and length checks.
Understand Dart null safety: non-nullable by default, declare nullable types with ?, and use ?. for safe access and ! for null assertion, including isEven on nullable values.
Explain functions and methods in Dart, how to define, call, and return values, and how optional and named parameters, fat arrow syntax, and required keyword work.
Explore how lambda expressions and anonymous functions in Dart enable you to pass and return functions, use function references, and apply them with list operations like for each.
Learn how a class acts as a blueprint for objects, define properties such as name, id, and department, and use default or parameterized constructors to initialize student instances.
Explore how named constructors create specialized variants and how nullable properties let you omit nonessential data. Review default constructors, optional arguments, and image constructors like network, asset, file, memory.
Explore the dry principle and how inheritance in Dart lets a child class reuse properties and methods from a base class via extends and super constructors, with a car example.
Learn how a parent car class acts as a blueprint. See how child classes override the drive method to customize behavior, such as electric cars, while reusing the base implementation.
Learn how to use abstract classes and abstract methods in Dart to enforce overridden drive methods, enabling polymorphic behavior across car subclasses like electric and fuel cars.
Learn how runtime polymorphism lets a car list hold electric, fuel, and gas cars as a common car type, calling overridden drive methods polymorphically at runtime.
Discover how to extend a class in Dart using mixins instead of multiple inheritance, adding features like multimedia and air conditioning to cars without altering the parent class.
Explore final and static components in object oriented programming; learn how final classes block inheritance, how base enables controlled extension, and how static properties and methods belong to the class.
Explore asynchronous programming in Dart with future, delayed, and async/await to run long tasks like network downloads without blocking the user interface, using examples of open/close connections and background operations.
Complete this module by recognizing that dart basics prepare you to start flutter smoothly, explore server setup with dart and backend options, and look forward to building beautiful apps.
Follow system requirements for hardware and Git for Windows, then install Android Studio and Flutter SDK with Dart to build Flutter apps for Android and iOS on Windows or macOS.
Install JetBrains toolbox to manage android studio, download android studio, configure the android sdk, and prepare your environment for flutter and dart plugins in the next lecture.
Install flutter and dart plugins in Android Studio, restart the IDE, and prepare the Android SDK with API level 35 and the emulator hypervisor driver for testing.
Create an Android virtual device in Android Studio via virtual device manager, pick a Pixel 7 with Play Store and Android 15 (API 35), download system image, and boot emulator.
Install the Flutter SDK via VS Code or download, install the Flutter and Dart extensions, use the command palette to create a project, and run flutter doctor to accept licenses.
Create and run your first Flutter project using Android Studio and the Dart SDK, configure the emulator, and explore the starter counter app in main.dart.
Learn to install the flutter sdk on Windows: download, extract, add flutter and dart to PATH, install git, and prepare for IDE setup.
Install Android Studio on Windows by downloading the exe, installing Android SDK, and preparing to add Flutter and Dart plugins, then set up an emulator for the Flutter project.
Install Flutter and Dart plugins in Android Studio, verify your setup with Flutter doctor, and resolve Android toolchain and license issues to enable Flutter development.
Learn to set up Android emulators and run Flutter apps on real devices, choosing models with Play Store, selecting system images, and installing Haxm for smooth testing.
Explore Flutter fundamentals by building with core widgets, the theme widget, and layouts, and learn navigation, stateful vs stateless widgets, and basic input controls.
Create a new Flutter project, set a project name and organization, run a minimal app that prints hello world with a text widget, and explore the widget tree.
Explore the standard Flutter project structure, including the lib/main.dart, pubspec.yaml, and dependencies, and learn how to manage assets, fonts, and external libraries with pub get.
Wrap the text with a center widget to place it at the screen center; the center widget, a layout container, takes available space and centers its child text.
Learn to use MaterialApp as the root widget to set themes, routes, and the home widget in Flutter, and compare it with CupertinoApp for multi-platform targets.
Explore how the scaffold inside a material app builds a screen with a body, app bar, and optional bottom navigation, and learn to customize the app bar title and background.
Explore how to show an image from the network using the image widget in Flutter, including Image.network with a URL, sizing, and fitting with BoxFit.cover inside a material app.
Learn how to use the column widget to lay out multiple widgets vertically, control main axis and cross axis alignment, and align content from left to right in Flutter.
Explore the row widget in Flutter and master horizontal layout by applying main axis and cross axis alignments, nesting rows and columns, and customizing icon sizes.
Practice design by building a Flutter layout using image, text, and icon widgets within columns and rows, applying padding and spacer for precise alignment and spacing.
Refactor Flutter apps by modularizing main.dart with extracted widgets and methods, using a material app, home page, and context, while applying a single child scroll view to prevent overflow.
Explore how the stack widget lays out its children on top of each other, and use positioned to place elements at top, bottom, left, and right, controlling overflow with clip.
Learn to build a Flutter layout with stack, position, row, and column for overlapping designs. Shape circular images using container decorations and clip widgets with color, gradients, and shadows.
Compare list view and column in Flutter, focusing on default scrolling, infinite height, and widget recycling for memory efficiency. Learn when to use list view versus single child scroll view.
dynamically populate list view children by looping to create many widgets or by using list.generate and map each item to a text widget, enabling recycling and efficient scrolling.
Use the list view builder constructor to create items with itemCount and an itemBuilder that returns a list tile with a title, a subtitle, and optional leading or trailing widgets.
Master grid view in Flutter by using the builder constructor, sliver grid delegate with fixed cross axis count, and adjustable spacing and aspect ratio.
Learn to navigate between three pages in a Flutter app using a menu page, navigator.push, and material page route, using push replacement to replace the previous screen.
Explore how to build a counter app in Flutter that updates dynamic data through user interaction, leveraging stateless and stateful widgets, and a floating action button to increment a value.
Convert a stateless widget to a stateful one to manage state with setState. Learn how the build method rebuilds when count changes and how state lives at the class level.
Convert a stateless widget to a stateful one and manage image navigation with set state, using a list of image URLs and next and previous buttons at the image corners.
Explore Flutter input widgets with a focus on TextField, including decoration via hint and label text; learn to retrieve input with onChanged or a TextEditingController.
Bind a checkbox in Flutter to a boolean value and update it with setState, enabling dynamic checking and multiple selections with accompanying text.
Explore how to implement radio button widgets in Flutter, using an enum for gender, value and group value, and onChanged with setState to ensure only one selection.
Use a dropdown button to present a list of countries, mapping strings to dropdown menu items, handling onChanged with setState, and optionally expanding with styling for full width.
Build a Flutter todo app with a center floating action button that opens a modal bottom sheet containing text field for todo name and priority, stored in a static list.
Build a Flutter and Dart 2d to-do app with a stateful page, scaffold, list view, and a floating action button; manage todos via a model and a static list.
Explains building a Flutter to-do app with a stateless item widget and parent-managed state for performance, plus modal bottom sheet with text field and three priority radios defaulting to normal.
Master managing state inside a modal bottom sheet in Flutter with a stateful builder, separate context, and a save flow that validates input and adds a todo.
Implement a save workflow for a flutter to-do app by creating a todo with a timestamp id, saving to a static list, and clearing the input after insertion.
Explore hot reload and hot restart, how they update UI and preserve or reset state, and note const tips and Android Studio suggestions for performance.
Master the basics of Flutter widgets—scaffolds, rows, columns, list and grid views—and key material components like extended fav icon and dialogs. Explore the widget catalog and code labs.
Learn how to choose and implement Flutter state management as apps grow, exploring setState, provider, Riverpod, and other approaches such as inherited widget, Redux, and Bloc.
Explore ephemeral (local) state versus app state in Flutter, replace setState with provider, and learn how to manage data across widgets in a counter app.
Add the provider library from pub.dev to the dependencies in pubspec.yaml, then run flutter pub get; the lecture also explains package versus plugins and dev dependencies.
Replace setState with provider to manage a counter using ChangeNotifier. Register the provider at the top and access it with a consumer or provider.of to update and show the counter.
Explore how to replace setState with provider and consumer for selective widget rebuilding, use notifyListeners, and understand when to use listen false for calling methods.
Convert the existing todo app to use provider for state management, replacing setState by moving the list into a change notifier provider and accessing it with a consumer.
Create a Word Hurdle puzzle game in Flutter with provider state management, implementing a six-attempt Wordle-style board, a five-letter target word, random word selection, and a color-coded keyboard.
Set up a new Flutter project, add English words, provider, and flutter easy loading dependencies, run pub get, initialize loading in the MaterialApp, and adjust the dark color scheme.
Build a word hurdle page as a single-page flutter app, showing a five-letter word board, a keyboard, and delete/submit actions that generate and compare a random target word.
Build a Flutter hurdle provider using ChangeNotifier to create a 30-item Wordle-like board and generate a random five-letter target word from a word list for gameplay.
Create a dynamic hurdle board in flutter using a grid view builder, a hurdle provider, and a Wordle‑style cell widget, with responsive layout and coloring logic.
Build a keyboard view in Flutter by creating a stateless widget with three rows from inner lists, displaying letter keys inside a card to form a target word.
Create a virtual key widget for the keyboard as an elevated button, color-coding excluded letters and invoking onpress(letter). Integrate into the keyboard view with Expanded and responsive width.
Learn to wire a keyboard view with excluded letters and an on pressed callback, manage input via a provider, and build five-letter rows to match a target word.
Show letters on the hurdle board by updating the Wordle object as each letter is pressed, track the index, notify listeners, and prepare for delete and submit actions.
Explore building a hurdle page UI with delete and submit buttons using a provider to remove letters from the input row and update the hurdle board for Wordle-style gameplay.
Submit logic validates input word against a five-letter words list by joining row letters and lowering case. If invalid, show a snack bar; if valid, compare with the target word.
Learn to validate input by verifying word validity, five-letter length, and match with the target word, then display a reusable win/lose dialog via helper functions.
The lecture shows how the hurdle board marks each letter against the target word, updates Wordle objects, and handles six attempts with row progression and a losing dialog.
learn to reset a word-guessing game in flutter and dart, including handling attempts, validating input, showing win or lose dialogs, and reinitializing the board with a new word.
Conclude this module by consolidating provider-based state management, turning the World Hurdle page into a stateless widget, and planning sound enhancements and improved submit button behavior.
Explore flutter navigation by comparing navigator and router APIs, learn to use deep linking, pass arguments, and manage page history with go_router for mobile and web.
Configure go router in a Flutter app by converting material app to router, setting an initial location, and creating a home route that loads the home page stateless widget.
Learn to build a multi-page Flutter app with go router, defining routes and nested child routes, and navigate to page one, page two, and details via context go.
Master navigating with named routes in Flutter using go named, replacing long paths with route names and static route name constants for home, page one, and details.
Learn to pass arguments between pages in Flutter using path parameters with go router, define a profile page, and retrieve the id from the route state.
learn how to pass arguments between routes in Flutter using extra object, compare with path parameters, and know when this approach fits web and deep linking constraints.
Explore customizing go router error pages with an error builder and implement redirect routes for authentication, using named routes versus paths and top-level redirects to gate access.
Explore how router and navigator collaborate in flutter to pop pages programmatically, and navigate with go, go named, push, and push named, including nested routes on mobile and web.
Master flutter navigation by adopting the router API, compare router with navigator, and prepare to use go router for web apps and deep linking through guided practice.
Build a Flutter app that persists visiting card data locally with SQLite, capturing images and scanning text, and supports drag-and-drop to map fields and CRUD operations.
Build a V card app in Flutter, add provider, go router, sqflite, launcher, image picker, and google ml kit text recognition, then configure iOS and Android.
Create the home page and configure routing with go router, defining a home route and builder, and set up a bottom navigation bar and floating action button for future navigation.
Learn to implement a Flutter home page with a contacts list, a center-docked circular floating action button, and a bottom app bar with items to fetch all or favorite contacts.
Create a scan page as a stateful widget, wire it into a nested route, and add two buttons to capture from camera or pick from gallery for text scanning.
Implement a single get image function with image picker to capture or select images from camera or gallery, handling nulls and preparing for text extraction.
Learn how to scan text from an image in Flutter using a text recognizer, configure a Latin script, convert a file to input image, process it, and extract lines.
Learn to display extracted lines with a wrap layout and convert each line into a long press draggable, including drag feedback, data, and unique keys, preparing for drop targets.
Build a drop target widget in Flutter by pairing labels with drag targets, using a drop target item and a constants-based properties class to collect and join dropped values.
Master Flutter drag-and-drop by implementing drop target and drag target items to map seven contact properties on a visiting card, with card visibility tied to scan completion.
Drag and drop card properties to the corresponding contact fields, storing name, mobile, email, and image in state; enable the next button only after essential data is provided.
Define a comprehensive contact model with id, name, mobile, and more, then build a stateful form page that receives and edits the contact object via go named routing.
Build a form page using a global form key, seven text form fields with controllers, and init-state population from a contact model, with validation and a save action.
Define table and column constants, implement toMap and fromMap factory, and adapt for SQLite by converting booleans to integers and handling auto-incremented ids.
Create a db helper that opens an sqlite database using a path package, and on first run creates a contact table with id, name, mobile, email, and other fields.
Learn to implement asynchronous insert and query methods for a contacts table in Flutter using a database object, maps, and a contact model, with futures.
Create a contact provider using change notifier, connect it to main.dart, and implement insert and query operations to save and display contacts in a list with snackbar feedback.
Discover how flutter's navigation stack with home, scan, and form pages requires updating the contact list and calling notify listeners after insertion, including syncing IDs and state.
Debug and stabilize a Flutter and Dart contact app by fixing validator logic, ensuring proper insert and in-app list refresh, and enabling detail view, delete, and favorite filtering.
Implement a delete contact function in the db helper that returns the deleted row id using a where clause on the contact id and a placeholder, with where args.
Implement swipe-to-delete for a contact list using Flutter's built-in Dismissible, including unique keys, background indicators, and a confirmation dialog before deleting with a provider.
fixes a silly bug caused by copy-paste and id mapping in a flutter app, demonstrates using app inspector to view a SQLite table contacts, run queries, and manage live updates.
Master updating a contact's favorite field in a Flutter and Dart app by toggling 1/0 via id and refreshing the user interface to reflect changes in real time.
Learn to fetch favorite contacts with a where clause, switch between all and favorite via the provider, and diagnose boolean misinterpretation from a text field, prompting schema migration to integer.
Learn how to migrate a Flutter SQLite database by upgrading from version 1 to 2, renaming tables, creating a new table, migrating data, and handling future upgrades.
Build a contact details page as a stateful widget, pass contact id via routing, fetch the contact by id with a provider, and use FutureBuilder to handle loading and errors.
Learn how to add a contact card in a Flutter app, display phone numbers, and implement call and SMS actions using the URL launcher, with emulator considerations and platform prerequisites.
Learn to implement email, browser, and map actions in a Flutter app by defining mailto and https URLs, updating manifest and info.plist, and handling Android and iOS map schemes.
this wrap-up shows building a Flutter and Dart contact app, enabling sms, email, maps, and web links via platform-aware URL schemes and SQLite local persistence.
Build an earthquake app using the Flutter networking API to fetch real earthquake data worldwide, showing place, time, and magnitude, with date range, sorting, and location-based filtering.
Learn how to fetch earthquake data from the USGS API using HTTP requests, handle JSON and GeoJSON responses, and map the data to Dart objects for display.
Set up a Flutter project, add libraries for internationalization, provider, http, Geolocator, geocoding, and flutter easy loading; configure Android and iOS permissions, and implement simple navigation with two screens.
Learn to convert JSON map into a Dart model class using a JSON to Dart plugin, and build a provider to fetch and parse earthquake JSON data with nullable fields.
Create a Flutter data provider using change notifier to fetch earthquake data. Configure query parameters like start time, end time, magnitude, and radius, and map json to an earthquake model.
Learn to implement a Flutter http get request by building a data provider method, composing the full URL, decoding json, and refreshing the UI with notifyListeners.
Show earthquake data on the home page using a provider to load features and display them in a list with place, title, time, and magnitude, with loading and empty-state handling.
Map alert levels to colors in a chip widget to convey severeness, green, yellow, orange, and red; use a provider method to convert alert string to a circle avatar color.
Add a sort button to the app bar that opens a sorting dialog with magnitude and time options, using a provider to apply order by and refresh earthquake data.
Create a settings page in Flutter to adjust start time and end time with date pickers, display current values, and update data via a provider-driven flow.
Detect the device location to show earthquakes within a circular radius around the current city, and enable a location switch to update data accordingly.
Convert coordinates to a city name using the geocoding plugin by implementing an asynchronous get current city method that uses Placemark data and handles errors with try-catch.
wrap up highlights finishing the earthquake app, fetch data with http methods, parse json, and use geolocator and geocoding for location, with previews of weather and ecommerce projects.
Explore Firebase as a backend for a telescope ecommerce app with admin and user apps, featuring authentication, Cloud Firestore, Firebase Storage, Firebase Messaging, and Cloud Functions for orders and profiles.
Explore Firebase, Google’s full cloud platform for mobile, web, and desktop apps, covering authentication, Firestore, Cloud Functions, messaging, and storage, with pricing and offline capabilities.
Open the Firebase console, create a new project named shop A to Z, enable analytics, and explore the dashboard sections like authentication, database, storage, and messaging.
Add a Flutter project to a Firebase project, install the Firebase CLI, log in, and initialize Firebase Core and Cloud Firestore in main.dart before running the app.
Build a Flutter admin app with a login and dashboard page, configure go router with material app router, and implement Firebase authentication with status-based redirects.
Enable Firebase authentication in the project console, enable email and password for admin login, enable Google for users, then create users by email and password to obtain unique user IDs.
Implement authentication-driven routing with go router and firebase auth to redirect between login and dashboard pages, using an admin account and auth service to manage login, registration, and sign out.
Learn to log in with email and password using firebase authentication, via a login admin method returning a boolean, with loading, error handling, and navigation to the dashboard.
Implement a logout feature in the Flutter dashboard by adding an app bar action that calls an auth service logout, signs out the user, and navigates to the login page.
Set up a Firebase Cloud Firestore database to store admin credentials as documents in collections, configure test mode rules, and publish them for authenticated access.
Create an admins collection in the Firebase console, add a document with a unique ID (user ID) containing the admin email, and authenticate admins by matching the user ID.
Create a Firebase Firestore db helper and admin collection, then implement isAdmin to verify user ID exists and gate login to the dashboard via the auth service.
Create a reusable dashboard model with title, icon, and route name, render a two-column grid of card items, and navigate to add or view telescope pages via named routes.
Create a brand data class and define database methods to add and retrieve brands in Firestore, including a brand page, model, and provider for syncing brands.
Implement a telescope brand provider with change notifier and multi-provider, stream brands from Firestore, and display them on a brand page with no brands found handling.
Add brands to your Flutter app by triggering a reusable single text input dialog from a floating action button, validating input, and updating the list via a provider.
Prepare and input telescope data into a database, define a comprehensive telescope model, and use the freezed library to auto-generate toJson and fromJson methods.
Explore how the freezed package generates boilerplate for model classes by adding toJson, fromJson, and copyWith. Understand dependencies and dev dependencies in pubspec.yaml and install build_runner for code generation.
Create an image model class with image name, directory name, and download URL using freezed. Set up part directives and fromJson/toJson, then run build_runner to generate image_model.freezed.dart and image_model.g.dart.
Create a telescope model class using freezed with properties like id, model, brand, type, weight, price, stock, rating, and images; implement fromJson and toJson and run build_runner to generate code.
Define telescope attributes in constants.dart via an abstract final class telescope_utils with static types, mounts, and focus lists; prepare the add telescope page with radio groups and a date picker.
Build a telescope addition page by designing a scrollable form with an image placeholder and gallery or camera options, plus a brand dropdown populated from a provider with validation.
Create a reusable radial group widget to render radio options from a list and handle selection via a callback, applied to telescope type, mount type, and focus type.
Create the add telescope page by adding text form fields with controllers for model, dimension, weight, lens diameter, price, and stock; validate inputs, ensure an image is selected, then save.
Learn to initialize Firebase storage, adjust rules for auth, and upload telescope images to a telescope image directory, retrieving download URL via a provider method and returning an image model.
Create a telescope model instance by wiring fields from controllers, apply default average rating and discount, and prepare to save the telescope to a collection via provider and db helper.
Add telescope method in the provider to save telescope to the telescopes collection, generate document id, upload image to Firebase storage, convert to json, and reset fields after saving.
Add telescope data to Firestore by selecting and uploading a compressed image, entering model, dimensions, weight, price, and stock, converting objects to JSON, and confirming save with a loading indicator.
Develop the view telescope page in Flutter and Dart by fetching all telescopes via DB helper and displaying them in a list with cached network images, brand names, and models.
Build a Flutter telescope details page that fetches by id, shows model name and images, and enables adding images and editing price, discount, stock, and description.
Learn to add and show additional telescope images by selecting from the gallery, uploading via a provider, updating the telescope with image data, and previewing images in a dialog.
Delete an image from Firebase storage and its document record using a provider method, update the telescope's additional image list, and refresh the UI.
Navigate to a description page with a text field and a controller to edit a telescope description, then save updates by telescope id.
Learn to update a telescope description in a Flutter app, save via a dialog, and reflect changes in the UI, with upcoming tasks to edit price, discount, and stock.
Learn to update telescope price using a loading dialog and provider method, supplying telescope id, price field, and new value, and troubleshoot string to number issues in Firebase.
Currently Flutter is one of the most popular cross platform framework amongst the developers. Flutter targets multiple platforms from a single code base. In this course, you will learn how to build apps for Android and iOS using the core components of Flutter. Also, you will learn syntaxes and essential features of Dart Programming Language since Dart is used to build Flutter projects.
You will begin with Dart Programming Language and you will begin from scratch. Dart is a powerful language and heavily optimized for Flutter. You will learn many features of Dart, specially those are required for Flutter. You will learn Lambda Expressions which will help you work functionally and alos Null Safety will protect your code from crashing due to Null Pointer Exception. You will learn about Object Oriented concepts like Inheritance, Polymorphism, Abstraction and Mixin that can help you to write your code in a modular format.
You will be introduced with many Widgets-the main core components of Flutter. The more you know about Widgets, the more you know Flutter. It's also important to take few considerations while chosing Widgets, because at the end of day, performance play a key role in any software development. Widgets need to be refractored and you will learn how to seperate codes into reusable Widgets and Methods. You will also learn the basic State Management approach using Stateful Widget and the necessity of Stateless and Stateful, where to use, when to use and why to use them in a proper way.
You will learn Provider - a simple yet powerful approach for State Management and also know how this approach can turn your project in a extendable, expandable pattern. You need to understand the state and then chose which approach is best for you. State Management is a very crucial part of Flutter and many developers are tempted with many approaches and end up overdoing things. You will learn exactly what you need to identify and manage the states of you app in an optimized way.
To persist data, this course covers both the local and cloud persistance. Local Database is important to cache data and also for apps those really dont' need to share its data to the world. You will learn SQLite and CRUD operations and migrations also. You will use Firebase for cloud solution, a powerful backend backed by Google. Firebase provides many services, both in free and paid subscription. Authentication, Realtime Database, Storage, Messaging, Functions are the key services that has been covered in this course.
You will learn how to make web requests and fetch JSON and convert it to Dart objects. Dart provides a convenient package for handling network operations and web requests.
In parallel with learning, you will be practicing the conventions and recommendations for writing good codes using principals, patterns and good practice approaches.
By the end of this course, you will be able to build any kind of mobile apps using Flutter and will have a strong foundation and clear concept.