কোর্স আউটলাইন
| 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 |
| 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 |
| 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 an Android Emulator | Lecture and Lab Exercise | ||
| Running the App on a Real iOS Device | Lecture and Lab Exercise | ||
| Running the App on an 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 |
| 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 |
| 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 |
| Day | Topic | Class Duration | Teaching Method |
|---|---|---|---|
| Day 16 | Navigators and routes | 4hr | Lecture and Lab Exercise |
| Applying push() using MaterialPageRoute | Lecture and Lab Exercise | ||
| Day 17 | Applying pop() | 4hr | Lecture and Lab Exercise |
| Day 18 | Declaring parameter-less routes (pushNamed()) in MaterialApp widget | 4hr | Lecture and Lab Exercise |
| 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 |
| Day | Topic | Class Duration | Teaching Method |
|---|---|---|---|
| Day 22 | Applying ThemeData | 4hr | Lecture and Lab Exercise |
| Day 23 | The Basic Screen layout | 4hr | Lecture and Lab Exercise |
| Applying custom Font | Lecture and Lab Exercise |
| 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 |
| 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 |
| 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 |
| 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 |
| 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 |
| 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 |
| 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 |
| 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 |
| Day | Topic | Class Duration | Teaching Method |
|---|---|---|---|
| Day 46 | Introduction | 4hr | Practical |
| How Authentication Works | Practical | ||
| Prepare Backend | Practical | ||
| Adding the Auth Screen | 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 Creator | 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 |
| 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 |
| 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 |