Flutter App Development Course Content
Introduction
Introduction to Dart
Control Flow and Functions in Dart - If Statements , Logical
Operators , For Loops
Object-Oriented Programming - Introduction
Object-Oriented Programming - Intermediate - Inheritance Concepts
Object-Oriented Programming - Advanced - Abstract and
Interface Concepts
Data Structures and Collections
Building Flutter Apps - Flutter Fundamentals
Flutter Stateful Widgets
Flutter Basics (Quiz App)
Running Apps on Different Devices & Debugging Apps
Responsive & Adaptive User Interfaces and Apps
State Management [SHOP APP]
Working with User Input & Forms [SHOP APP]
Sending Http Requests [SHOP APP]
Adding User Authentication [SHOP APP]
Adding Animations [SHOP APP]
Using Native Device Features (Camera, Maps , Location, . . . )
[GREAT PLACES APP]
Running Native Swift, Objective- C, Java, or Kotlin Code
Firebase, Image Upload, Push Notifications - Building a Chat
App
Introduction
What is Flutter ?
Understanding the Flutter Architecture
How Flutter & Dart Code Gets Compiled To Native Apps
Flutter macOS Setup – Part 1
Flutter macOS Setup – Part 2
MacOS Development Environment
Flutter Windows Setup
Windows Development Environment
Flutter & Material Design
Flutter Alternatives
Understanding Flutter Versions
Introduction to Dart
Introduction to Dart
Dart – Coding Style and Naming Convention
Dart – Declaring variables – String
Dart – Types and Assigning Types to Variables
Dart – Numbers – Integer s & Doubles
Dart – Booleans
Dart – Const and Final Keywords
Dart – Concatenation
Dart – Operators – Arithmetic
Dart – Operators – Equality & Relational
Control Flow and Functions in Dart - If Statements,
Logical Operators, For Loops
Control Flow – If Statements
Control Flow – While, Do-While and Break
Switch Cases
Introduction to Functions
Function Return Types
Using the => Operator for Returning Expressions
Dart – Argument s and Functions
Dart – Optional Parameter s
Dart – Lexical Scope
Object-Oriented Programming - Introduction
Introduction to Classes and Objects
Introduction to Class Creation and Instance Variables
Adding Methods to Classes
Introduction to Constructors
Names & Sugar Syntactic Constructors
Setters & Getters
Object-Oriented Programming - Intermediate -
Inheritance Concepts
Introduction to Inheritance
Creating Classes and Inheritance Tree
Override Methods
Inheriting Classes with Constructors
The toString( ) Method
Object-Oriented Programming - Advanced - Abstract
and Interface Concepts
Introduction to Abstract & Interface Classes
Abstract and Interface Classes – Creation
Data Structures and Collections
Introduction to Collections
Creating Lists and Iterating through Them
Creating a List with a Person Type Object
Introduction to Maps
Building Flutter Apps - Flutter Fundamentals
Introduction to Flutter and Flutter App Anatomy
Creating a Flutter Hello World App – Basics with Text Widget
Understanding Material Design Basics – Text and Widget
Properties
Formatting Our Code
Little Material Design Presentation
Flutter Scaffold Widget and Properties
Flutter InkWell Widget and Event Listeners
Flutter Gesture Detector Widget – Creating a Custom Button
Flutter Bottom Navigator and Adding a Tap
Flutter Floating Action Button
Flutter Stateful Widgets
Introduction to Stateless vs Stateful Widgets
Build a Quotes App
Build a Quotes App – Finished Product
Flutter Basics (Quiz App)
Module Introduction
Creating a New Project
An Overview of Generated Files & Folders
Building an App From Scratch
Running the App on an Emulator
Class Constructors & Named Arguments
First Summary & Additional Syntax
Building a Widget Tree
Visible & Invisible Widgets
Adding Layout Widgets
Connecting Functions & Buttons
Anonymous Functions
Updating Widget Data
Updating Correctly with Stateful Widgets (Part-1 )
Updating Correctly with Stateful Widgets (Par t-2)
A Brief Look Under The Hood
Using Private Properties
Creating a New Custom Widget (Par t 1 )
Creating a New Custom Widget (Par t 2)
First Styling & Layouting Steps
Enums & Multiple Constructors
Official Docs & The Widget Catalog
Passing Callback Functions Around
Mapping Lists to Widgets
Final vs Const
[DART DEEP DIVE ] More on “ if ”
Statements
[DART DEEP DIVE ] The “null ”Value
Outputting Widgets Conditionally
Splitting the App Into Widgets
Calculating a Total Score
Getters & “else-if ”
Resetting the Quiz
Wrap Up
Running Apps on Different Devices & Debugging
Apps
Module Introduction
Running the App on a Real Android Device
Draft Lesson
Working with the Emulators / Using the Emulators
Understanding Error Messages & Fixing Errors
Using the Debugger
Draft Lesson
Understanding the Repaint Rainbow
Wrapping up the Dar t DevTools
Responsive & Adaptive User Interfaces and Apps
Module Introduction
What does “Responsive” and “Adaptive” Mean?
Examples: Where we could improve the App!
Calculating Sizes Dynamically
Using the Layout Builder Widget
Rendering Alternative Landscape Content – 1
Finishing Landscape Mode
Showing Different Content Based on Device Orientation
Respecting the Soft Keyboard Insets
Using the device sice condition
Managing the MediaQuery Object
Checking the Device Platform
Using Cupertino ( iOS) Widgets
Using the SafeArea
More Cupertino Styles
Using Cupertino Buttons
Creating Custom Adaptive Widgets
Wrap Up
State Management [SHOP APP]
Module Introduction
Planning the App
Defining a Data Model
Working on the “Products” Gr id & Item Widgets
Styling & Theming the App
Adding Navigation to the App
Why State Management?And what is “State” and “State Management
” ?
Understanding the “Provider ” Package & Approach
Working with Providers & Listeners
[DART DEEP DIVE ] Inheritance ( “extends” ) vs Mixins ( “with” )
Listening in Different Places & Ways
Using Nested Models & Providers
Exploring Alternative Provider Syntaxes
Using “Consumer ” instead of “Provider .of ”
Local State vs App-wide State
Adding Shopping Cart Data
Working with Multiple Providers
Connecting the Car t Provider
Working on the Shopping Car t & Displaying a Total
Displaying a List of Cart Items
Making Car t Items Dismissible
Adding Product Detail Data
Providing an Orders Object
Adding Orders
Adding an Orders Screen
Using a Side Drawer
Making Orders Expandable & Stateful Widgets vs Providers
Wrap Up
Working with User Input & Forms [SHOP APP]
Module Introduction
Snackbars & Undoing “Add to Car t ” Actions
Showing Alert Dialogs Adding a “Manage Products” Page
“ Edit Product ” Screen & A Problem
Using Forms & Working with Form Inputs
Managing Form Input Focus
Multiline Inputs & Disposing Objects
Image Input & Image Preview
Submitting Forms
Validating User Input
Adding Validation to All Inputs
Saving New Products
Time to Update Products!
Allowing Users to Delete Products
Wrap Up
Sending Http Requests [SHOP APP]
Module Introduction
On-Device vs Web Storage
How to Connect Flutter to a Database
Preparing Our Backend
How To Send Http Requests
Sending POST Requests
Working with Futures in Dar t
Showing a Loading Indicator
Working with “async” & “await ”
Fetching Data, initState & -of (context )
How to Transform Fetched Data
Updating Data via PATCH Requests
Utilizing Optimistic Updating
A Challenge For You!
Storing Orders in the Web
Fetching Orders & Fixing an Issue
Wrap Up
[DART DEEP DIVE ] Futures & Async Code
Updating Data via PATCH Requests Adding User Authentic
Adding User Authentication [SHOP APP]
Module Introduction
How Authentication Works
Prepare Backend
Adding the Auth Screen
Adding User Signup Allowing Users to Log In
Handling Authentication E r rors
Managing the Auth Token Locally ( in the App)
Adding the Token to All Requests
Connecting the “ Favorite” Status to Users
Attaching Products to Users & Filtering By Creator
Attaching Orders to Users
Adding a Logout Functionality
Automatically Logging Users Out (After Some Time)
Automatically Logging Users In
Wrap Up
Adding Animations [SHOP APP]
Module Introduction
Animations From Scratch (Completely Manually Controlled)
Using the “AnimatedBuilder ” Widget
Working with the “AnimatedContainer ”
More Built-in Animation & Transition Widgets
Fading Loaded Images In (And Showing a Placeholder )
Adding a “Hero” Transition
Working with Slivers
Practice: Animating Order Boxes
Draft Lesson
Wrap Up
Using Native Device Features (Camera, Maps,
Location) [GREAT PLACES APP]
Module Introduction
Planning the App PlaceList & Place Provider Setup
Adding the “Add Place” Screen & An Image Input
Managing Data & Images via the Provider Package
Handling Errors
Testing on Real Devices
Preparing SQLite
Storing & Fetching Data with SQLite
Adding a Location Input & The “ location” Package
Fetching the User Coordinates
Displaying a Static Map Snapshot
Rendering a Dynamic Map (via Google Maps)
Allowing Users to Pick a Location on the Map
Storing the Location in SQLite
Adding a “Place Detail ” Screen & Opening the Map in “ read-only”
Mode
Wrap Up
Running Native Swift, Objective-C, Java, or Kotlin
Code
Module Introduction
Sending a Method Call from Flutter
Running Android Code
Running iOS Code
Wrap Up
Firebase, Image Upload, Push Notifications - Building
a Chat App
Module Introduction
What is Firebase?
Creating a New App Getting Started with Firebase
Rendering Stream Data with StreamBuilder
A Basic Authentication Screen
Adding an App Theme
Creating an Authentication Form
Connecting Auth Form & Auth Screen
Implementing Authentication
Storing Extra User Data
Adding Firebase Security Rules
Listening to Chat Messages
Sending & Order ing Chat Messages
Creating a Basic Chat Bubble Widget
Improving the Chat Bubbles
Testing on Multiple Devices
Displaying User Names
Adding an Image Picker
Preparing File Upload & Validating Images
Uploading Images
Running on a Real iOS Device
Displaying User Images
How Push Notifications Work
An Introduction to Firebase Cloud Messaging
Android & Push Notifications
iOS & Push Notifications
Handling Push Notifications
Getting Started with Firebase Cloud Functions
Setting a Firestore Trigger
Sending Automated Push Notifications
Polishing & Wrap Up