Course Outline (Major Units)-200h/50D

Background and Installation (8h/2d)

Day Topic Class Duration Teaching Method
Day 1 Introduction 4hr Lecture
What is Flutter? Lecture
Understanding the Flutter Architecture Lecture
How Flutter & Dart Code Gets
Compiled to Native Apps
Lecture
Understanding Flutter Versions Lecture
Flutter macOS Setup Lecture and Lab Exercise
macOS Development Environment Lecture and Lab Exercise
Day 2 Flutter Windows Setup 4hr Lecture and Lab Exercise
Windows Development Environment Lecture and Lab Exercise
Flutter & Material Design Lecture and Lab Exercise
Flutter Alternatives Lecture and Lab Exercise

Introducing Widget(16h/4d)

Day Topic Class Duration Teaching Method
Day 3 Introduction 4hr Lecture
Widget Tree & Element Tree -
What, Why and How?
Lecture and Lab Exercise
How Flutter Rebuilds & Repaints
the Screen
Lecture and Lab Exercise
How Flutter Executes build() Lecture and Lab Exercise
Day 4 Widget and their role in a flutter app 4hr Lecture and Lab Exercise
The Material App and Scaffold widget Lecture and Lab Exercise
AppBar Lecture and Lab Exercise
Day 5 Uses of Buttons 4hr Lecture and Lab Exercise
More widget – Text styling
and decoration
Lecture and Lab Exercise
Animations Lecture and Lab Exercise
Day 6 Advanced UI -slivers, gestures,
splash screen
4hr Lecture and Lab Exercise
Hot reload and Hot restart, the tricks
of the trade
Lecture and Lab Exercise
Recreating the default
flutter app (UI only)
Lecture and Lab Exercise

Running Apps on Different Devices & Debugging Apps (8h/2d)

Day Topic Class Duration Teaching Method
Day 7 Introduction 4hr Lecture
Running the App on a
Real Android Device
Lecture and Lab Exercise
Running the App on a
Real Android Emulator
Lecture and Lab Exercise
Running the App on a
Real iOS Device
Lecture and Lab Exercise
Running the App on a
Real iOS Emulator
Lecture and Lab Exercise
Day 8 Working with the Emulators
/ Using the Emulators
4hr Lecture and Lab Exercise
Understanding Error Messages
& Fixing Errors
Lecture and Lab Exercise
Using the Debugger Lecture and Lab Exercise
Getting Started with the Dart DevTools Lecture and Lab Exercise
Understanding the Repaint Rainbow Lecture and Lab Exercise
Wrapping up the Dart DevTools Lecture and Lab Exercise

Common Widget in Flutter (12h/3d)

Day Topic Class Duration Teaching Method
Day 9 Containers and their role 4hr Lecture and Lab Exercise
Importing images from network
and assets
Lecture and Lab Exercise
Adding icons to widgets Lecture and Lab Exercise
Day 10 Understanding Row and Column 4hr Lecture and Lab Exercise
ListView and ListTile Lecture and Lab Exercise
Day 11 Building views using ListView.builder 4hr Lecture and Lab Exercise
Inkwell and its importance Lecture and Lab Exercise

Stateless and Stateful Widgets- The Concept (16/4d)

Day Topic Class Duration Teaching Method
Day 12 Stateless vs Stateful widgets 4hr Lecture and Lab Exercise
Day 13 Define a ‘State’ 4hr Lecture and Lab Exercise
Day 14 The setState Method 4hr Lecture and Lab Exercise
Day 15 Returning to the default flutter app 4hr Lecture and Lab Exercise

Navigating through Navigation (12h/3d)

Day Topic Class Duration Teaching Method
Day 16 Navigators and routes 4hr Lecture and Lab Exercise
Day 17 Applying push() and pop()
using MaterialPageRoute
4hr Lecture and Lab Exercise
Day 18 Declaring parameter-less
routes (pushNamed()) in
MaterialApp widget
4hr Lecture and Lab Exercise

Handling User Input. (12h/3d)

Day Topic Class Duration Teaching Method
Day 19 Using TestField 4hr Lecture and Lab Exercise
Day 20 Handling changes to a TextField 4hr Lecture and Lab Exercise
Day 21 Pass retrieved values
using Navigator
4hr Lecture and Lab Exercise

User Interface (8h/2d)

Day Topic Class Duration Teaching Method
Day 22 Applying ThemeData 4hr Lecture and Lab Exercise
Day 23 The Basic Screen layout
and Applying custom Font
4hr Lecture and Lab Exercise

Running Apps on Different Devices & Debugging Apps (8h/2d)

Day Topic Class Duration Teaching Method
Day 24 Introduction 4hr Lecture
What does "Responsive"
and "Adaptive" Mean?
Lecture
Calculating Sizes Dynamically Lecture and Lab Exercise
Day 25 Responsiveness 4hr Lecture and Lab Exercise
Controlling the Device Orientation Lecture and Lab Exercise
Rendering Alternative
Landscape Content
Lecture and Lab Exercise
Finishing Landscape Mode Lecture and Lab Exercise
Day 26 Showing Different Content
Based on Device Orientation
4hr Lecture and Lab Exercise
Respecting Softkeyboard,
device size, MediaQuery
Device Platform, OS etc.
Lecture and Lab Exercise
Creating Custom
Adaptive Widgets
Lecture and Lab Exercise
Adaptive Widgets Lecture and Lab Exercise
Wrap up Lecture and Lab Exercise

Asynchronous Functions (12h/3d)

Day Topic Class Duration Teaching Method
Day 27-28 The ‘Future’ function 6hr Lecture and Lab Exercise
Day 28-29 ‘async’ and ‘await’ 6hr Lecture and Lab Exercise

Working with Remote Data (12h/3d)

Day Topic Class Duration Teaching Method
Day 30 The ‘http’ packages 4hr Lecture and Lab Exercise
Day 31 Model Class and JSON parsing 4hr Lecture and Lab Exercise
Day 32 Displaying remote Data (News API) 4hr Lecture and Lab Exercise

Using 3rd Party Packages (12h/3d)

Day Topic Class Duration Teaching Method
Day 33-34 The ‘url_launcher’ package 6hr Lecture and Lab Exercise
Day 34-35 Adding onTap() to NEWS API 6hr Lecture and Lab Exercise

Common Widget in Flutter (12h/3d)

Day Topic Class Duration Teaching Method
Day 36 GridView 4hr Lecture and Lab Exercise
The’HERO’ Animation Lecture and Lab Exercise
Day 37 Stack 4hr Lecture and Lab Exercise
‘AlertDialoug’ with buttons Lecture and Lab Exercise

Practical session-1 [eCommerce APP]-State Management

Day Topic Class Duration Teaching Method
Day 38 Introduction 4hr Practical
Planning the App Practical
Defining a Data Model Practical
Working on the "Products"
Grid & Item Widgets
Practical
Styling & Theming the App Practical
Adding Navigation to the App Practical
Why State Management?
And what is "State"
and "State Management"?
Practical
Understanding the "Provider"
Package & Approach
Practical
Day 39 Working with Providers & Listeners 4hr Practical
Inheritance ("extends")
vs Mixins ("with")
Practical
Providing non-Objects Practical
Listening in Different Places & Ways Practical
Using Nested Models & Providers Practical
Exploring Alternative
Provider Syntaxes
Practical
Using "Consumer" instead
of "Provider.of"
Practical
Local State vs App-wide State Practical
Day 40 Adding Shopping Cart Data 4hr Practical
Working with Multiple Providers Practical
Connecting the Cart Provider Practical
Working on the Shopping
Cart & Displaying a Total
Practical
Displaying a List of Cart Items Practical
Making Cart Items Dismissible Practical
Adding Product Detail Data Practical
Providing an Orders Object Practical
Adding Orders Practical
Adding an Orders Screen Practical
Using a Side Drawer Practical
Making Orders Expandable
& Stateful Widgets vs Providers
Practical
Wrap Up Practical

Practical session-1 [e Commerce APP]-Working with User Input & Forms

Day Topic Class Duration Teaching Method
Day 41 Introduction 4hr Practical
Snackbars & Undoing
"Add to Cart" Actions
Practical
Showing Alert Dialogs Practical
Adding a "Manage Products" Page Practical
"Edit Product" Screen
& A Problem
Practical
Using Forms & Working
with Form Inputs
Practical
ListView or Column Practical
Managing Form Input Focus Practical
Day 42 Multiline Inputs
& Disposing Objects
4hr Practical
Image Input & Image Preview Practical
Submitting Forms Practical
Validating User Input Practical
Adding Validation to All Inputs Practical
Saving New Products Practical
Time to Update Products! Practical
Allowing Users to
Delete Products
Practical
Wrap Up Practical

Practical session-1 [eCommerce APP]- Sending Http Requests

Day Topic Class Duration Teaching Method
Day 43 Introduction 4hr Practical
On-Device vs Web Storage Practical
How to Connect Flutter to a Database Practical
Preparing Our Backend Practical
How To Send Http Requests Practical
Sending POST Requests Practical
Working with Futures in Dart Practical
Futures & Async Code Practical
Http Requests & Futures Practical
Showing a Loading Indicator Practical
Handling Errors Gracefully Practical
Day 44 Working with "async" & "await" 4hr Practical
Fetching Data, initState
& "of(context)"
Practical
How to Transform Fetched Data Practical
Implementing Pull-to-Refresh Practical
Updating Data via PATCH Requests Practical
Utilizing Optimistic Updating Practical
Day 45 Creating Custom Exceptions
& More Error Handling
4hr Practical
Updating the "Favorite"
Status Optimistically
Practical
Storing Orders in the Web
Fetching Orders & Fixing an Issue
Practical
Using the "FutureBuilder"
Widget & Improving the Code
Practical
Wrap Up Practical

Practical session-1 [eCommerce APP]- Adding User Authentication

Day Topic Class Duration Teaching Method
Day 46 Introduction 4hr Practical
How Authentication Works Practical
Prepare Backend Practical
Adding the Auth Screend Practical
Adding User Signup Practical
Allowing Users to Log In Practical
Handling Authentication Errors Practical
Managing the Auth Token
Locally (in the App)
Practical
Day 47 Using the "ProxyProvider" and
Attaching the Token to
Outgoing Http Requests
4hr Practical
Adding the Token to All Requests Practical
Connecting the "Favorite"
Status to Users
Practical
Attaching Products to Users
& Filtering By Creatorsh
Practical
Attaching Orders to Users Practical
Adding a Logout Functionality Practical
Automatically Logging Users Out
(After Some Time)
Practical
Automatically Logging Users In Practical
Wrap Up Practical

Practical session-1 [eCommerce APP]- Adding Animations

Day Topic Class Duration Teaching Method
Day 48 Introduction 4hr Practical
Animations From Scratch
(Completely Manually Controlled)
Practical
Using the "AnimatedBuilder" Widget Practical
Working with the "AnimatedContainer" Practical
More Built-in Animation
& Transition Widgets
Practical
Day 49 Fading Loaded Images In
(And Showing a Placeholder)
4hr Practical
Adding a "Hero" Transition Practical
Working with Slivers Practical
Animating Order Boxes Practical
Implementing Custom Route Transitions Practical
Wrap Up Practical

Publish App to Market Place

Day Topic Class Duration Teaching Method
Day 50 Android app publishing mechanism 4hr Lecture and Lab Exercise
iOS app publishing mechanism Lecture and Lab Exercise
;