Flutter & Dart The Complete Guide 2023 Edition

A Complete Guide to the Flutter SDK & Flutter Framework for building native iOS and Android apps
Flutter & Dart The Complete Guide 2023 Edition
File Size :
20.62 GB
Total length :
42h 35m



Academind by Maximilian Schwarzmüller


Last update

Last updated 11/2022



Flutter & Dart The Complete Guide 2023 Edition

What you’ll learn

Learn Flutter and Dart from the ground up, step-by-step
Build engaging native mobile apps for both Android and iOS
Use features like Google Maps, the device camera, authentication and much more!
Learn how to upload images and how to send manual and automated push notifications
Learn all the basics without stopping after them: Dive deeply into Flutter & Dart and become an advanced developer

Flutter & Dart The Complete Guide 2023 Edition


Basic programming language will help but is not a must-have
You can use either Windows, macOS or Linux for Android app development – iOS apps can only be built on macOS though
NO prior iOS or Android development experience is required
NO prior Flutter or Dart experience is required – this course starts at zero!


Join the most comprehensive & bestselling Flutter course and learn how to build amazing iOS and Android apps!You don’t need to learn Android/ Java and iOS/ Swift to build real native mobile apps!Flutter – a framework developed by Google – allows you to learn one language (Dart) and build beautiful native mobile apps in no time. Flutter is a SDK providing the tooling to compile Dart code into native code and it also gives you a rich set of pre-built and pre-styled UI elements (so called widgets) which you can use to compose your user interfaces.Flutter is extremely trending and gets used for major Google apps like their Adwords app – it’s now marked as “ready for production”, hence now is the time to jump in and learn it!This course will teach Flutter & Dart from scratch, NO prior knowledge of either of the two is required! And you certainly don’t need any Android or iOS development experience since the whole idea behind Flutter is to only learn one language.You’ll learn Flutter not only in theory but we’ll build a complete, realistic app throughout this course. This app will feature both all the core basics as well as advanced features like using Google Maps, the device camera, adding animations and more!With Flutter, you’ll be able to write code only once and ship your apps both to the Apple AppStore and Google Play.Use Google’s Material Design to build beautiful, yet fully customizable, apps in no time with almost zero effort. You can use the rich widget suite Flutter provides to add common UI elements like buttons, switches, forms, toolbars, lists and more – or you simply build your own widgets – Flutter makes that a breeze, too.Here’s what’s included in the course:Detailed setup instructions for both macOS and WindowsA thorough introduction to Flutter, Dart and the concept behind widgetsAn overview of the built-in widgets and how you may add your own onesDebugging tipps & tricksPage navigation with tabs, side drawers and stack-based navigationState management solutionsHandling and validating user inputConnecting your Flutter app to backend servers by sending Http requestsUser authenticationAdding Google MapsUsing native device features like the cameraAdding beautiful animations & page transitionsImage UploadPush Notifications – manual approach and automatedHow to publish your app to the app storesAnd more!This course is for you if …You’re interested in building real native mobile apps for the two most popular mobile platforms – iOS and AndroidYou want to explore the full set of features Flutter offersDon’t want to spend hours learning two completely different languagesCourse prerequisites:Basic programming language knowledge will help a lot but is not a hard requirementYou DON’T need to know Flutter or DartYou DON’T need to know iOS (Swift/ObjectiveC) or Android (Java)


Section 1: Introduction

Lecture 1 Introduction

Lecture 2 What is Flutter?

Lecture 3 Join our Online Learning Community

Lecture 4 Understanding the Flutter Architecture

Lecture 5 How Flutter & Dart Code Gets Compiled To Native Apps

Lecture 6 Understanding Flutter Versions

Lecture 7 Flutter macOS Setup

Lecture 8 macOS Development Environment

Lecture 9 Flutter Windows Setup

Lecture 10 Windows Development Environment

Lecture 11 Flutter & Material Design

Lecture 12 Flutter Alternatives

Lecture 13 Course Outline

Lecture 14 How To Get The Most Out Of The Course

Lecture 15 Useful Resources & Links

Section 2: Flutter Basics [QUIZ APP]

Lecture 16 Module Introduction

Lecture 17 Creating a New Project

Lecture 18 An Overview of the Generated Files & Folders

Lecture 19 More on Git (Version Control System)

Lecture 20 Analyzing the Default App

Lecture 21 Dart Basics

Lecture 22 More Dart Basics

Lecture 23 Dart Basics – Summary

Lecture 24 Building an App From Scratch

Lecture 25 Running the App on an Emulator

Lecture 26 Class Constructors & Named Arguments

Lecture 27 First Summary & Additional Syntax

Lecture 28 Building a Widget Tree

Lecture 29 Visible (Input / Output) & Invisible (Layout / Control) Widgets

Lecture 30 Adding Layout Widgets

Lecture 31 Using The “Old” Buttons

Lecture 32 Connecting Functions & Buttons

Lecture 33 Anonymous Functions

Lecture 34 Updating Widget Data (Or: Using StatelessWidget Incorrectly)

Lecture 35 [DART DEEP DIVE] Understanding Lists

Lecture 36 Updating Correctly with Stateful Widgets

Lecture 37 A Brief Look Under The Hood

Lecture 38 Using Private Properties

Lecture 39 Creating a New, Custom Widget

Lecture 40 First Styling & Layouting Steps

Lecture 41 Enums & Multiple Constructors

Lecture 42 Official Docs & The Widget Catalog

Lecture 43 Styling Buttons

Lecture 44 Passing Callback Functions Around

Lecture 45 Introducing Maps

Lecture 46 Mapping Lists to Widgets

Lecture 47 final vs const

Lecture 48 Introducing “if” Statements

Lecture 49 [DART DEEP DIVE] More on “if” Statements

Lecture 50 [DART DEEP DIVE] The “null” Value & Null Safety

Lecture 51 Outputting Widgets Conditionally

Lecture 52 Splitting the App Into Widgets

Lecture 53 Calculating a Total Score

Lecture 54 Getters & “else-if”

Lecture 55 Resetting the Quiz

Lecture 56 “Old” Button Widgets vs “New” Button Widgets

Lecture 57 Wrap Up

Lecture 58 Module Resources

Section 3: Running Apps on Different Devices & Debugging Apps

Lecture 59 Module Introduction

Lecture 60 Running the App on a Real Android Device

Lecture 61 Running the App on an iOS Emulator

Lecture 62 Running the App on a Real iOS Device

Lecture 63 Working with the Emulators / Using the Emulators

Lecture 64 Understanding Error Messages & Fixing Errors

Lecture 65 Using the Debugger

Lecture 66 Getting Started with the Dart DevTools

Lecture 67 Understanding the Repaint Rainbow

Lecture 68 Wrapping up the Dart DevTools

Lecture 69 Useful Resources & Links

Section 4: Widgets, Styling, Adding Logic – Building a Real App [PERSONAL EXPENSES APP]

Lecture 70 Module Introduction

Lecture 71 An Overview of the Core Flutter Widgets

Lecture 72 Planning the App

Lecture 73 Combining Widgets

Lecture 74 Understanding Column Alignment

Lecture 75 Not a Widget: Adding a Transaction Model & Transaction Data

Lecture 76 Mapping Data Into Widgets

Lecture 77 Building a Custom List Item

Lecture 78 Styling a Container

Lecture 79 Styling Text

Lecture 80 More Styling!

Lecture 81 Containers vs Columns vs Rows

Lecture 82 Using String Interpolation

Lecture 83 Installing External Packages & Formatting Dates

Lecture 84 DateFormat Patterns

Lecture 85 Adding Text Input Widgets (TextField)

Lecture 86 Fetching User Input

Lecture 87 Splitting the App Into Widgets

Lecture 88 Connecting Widgets & Managing Data / State

Lecture 89 Adding User Transactions to the List

Lecture 90 Making the List Scrollable!

Lecture 91 Working with ListViews

Lecture 92 Further Input & Output Styling and Configuration

Lecture 93 Adding AppBar Buttons & Floating Action Buttons

Lecture 94 Showing a Modal Bottom Sheet

Lecture 95 Improving & Styling the Modal Bottom Sheet

Lecture 96 Configuring & Using Themes

Lecture 97 Custom Fonts & Working with Text Themes

Lecture 98 Updated Text Theme Properties

Lecture 99 Adding Images to the App

Lecture 100 Planning the Chart Widget

Lecture 101 Looping Through Lists

Lecture 102 More on “for” Loops

Lecture 103 Deriving Recent Transactions

Lecture 104 Creating Bars for our Chart

Lecture 105 Populating the Chart with Values

Lecture 106 Finishing the Chart Bars

Lecture 107 Flexible & Expanded: Deep Dive

Lecture 108 Adding a ListTile Widget

Lecture 109 Improving the Overall Chart

Lecture 110 Widgets & Configuring Widgets – Summary / Overview

Lecture 111 Getting Started with Date Selection

Lecture 112 Showing a DatePicker

Lecture 113 Adding Transactions with a Date

Lecture 114 Deleting Transactions & Using IconButtons

Lecture 115 Final Polishing!

Lecture 116 Wrap Up

Lecture 117 Useful Resources & Links

Section 5: Responsive & Adaptive User Interfaces and Apps

Lecture 118 Module Introduction

Lecture 119 What does “Responsive” and “Adaptive” Mean?

Lecture 120 Examples: Where we could improve the App!

Lecture 121 Calculating Sizes Dynamically

Lecture 122 Working with the “textScaleFactor”

Lecture 123 Using the LayoutBuilder Widget

Lecture 124 Controlling the Device Orientation

Lecture 125 Rendering Alternative Landscape Content – 1

Lecture 126 Finishing Landscape Mode

Lecture 127 Showing Different Content Based on Device Orientation

Lecture 128 Respecting the Softkeyboard Insets

Lecture 129 Using the Device Size in Conditions

Lecture 130 Managing the MediaQuery Object

Lecture 131 Checking the Device Platform

Lecture 132 Using Cupertino (iOS) Widgets

Lecture 133 Using the SafeArea

Lecture 134 More Cupertino Styles

Lecture 135 Using Cupertino Buttons

Lecture 136 Creating Custom Adaptive Widgets

Lecture 137 Wrap Up

Lecture 138 Useful Resources & Links

Section 6: Widget & Flutter Internals – Deep Dive

Lecture 139 Module Introduction

Lecture 140 The Problem At Hand

Lecture 141 Widget Tree & Element Tree – What, Why and How?

Lecture 142 How Flutter Rebuilds & Repaints the Screen

Lecture 143 How Flutter Executes build()

Lecture 144 Using “const” Widgets & Constructors

Lecture 145 Writing Good Code

Lecture 146 Extracting Widgets

Lecture 147 Using Builder Methods

Lecture 148 Understanding the Widget Lifecycle

Lecture 149 Calling super.initState() etc.

Lecture 150 Understanding the App Lifecycle

Lecture 151 Understanding Context

Lecture 152 A Problem with Lists & Stateful Widgets

Lecture 153 Understanding the Problem Root

Lecture 154 Using Keys

Lecture 155 Wrap Up

Lecture 156 Useful Resources & Links

Section 7: Navigation & Multiple Screens [MEALS APP]

Lecture 157 Module Introduction

Lecture 158 Planning the App

Lecture 159 Starting With The App – Adding Base Data

Lecture 160 Creating a Grid & Working with Linear Gradients

Lecture 161 Registering a Screen as the Main Screen

Lecture 162 Styling & Theming

Lecture 163 Navigating to a New Page

Lecture 164 Passing Data via the Constructor

Lecture 165 Using Named Routes & Passing Data With Named Routes

Lecture 166 Diving Deeper into Named Routes

Lecture 167 Adding a Meal Model & Data

Lecture 168 Selecting Meals for a Chosen Category

Lecture 169 Displaying Recipe Items & Using Network Images

Lecture 170 Finishing the Meal List Item

Lecture 171 Navigating to the Meal Detail Page

Lecture 172 onGenerateRoute & onUnknownRoute

Lecture 173 Finishing the Meal Detail Page

Lecture 174 Adding a TabBar to the Appbar

Lecture 175 Adding a Bottom TabBar

Lecture 176 Adding a Custom Drawer

Lecture 177 Adding Links to the Drawer

Lecture 178 Replacing Pages (Instead of Pushing)

Lecture 179 Popping Pages & Passing Data Back

Lecture 180 Adding Filter Switches

Lecture 181 Adding Filtering Logic

Lecture 182 Adding a “Mark as Favorite” Feature

Lecture 183 A Problem!

Lecture 184 Wrap Up

Lecture 185 Useful Resources & Links

Section 8: State Management [SHOP APP]

Lecture 186 Module Introduction

Lecture 187 Planning the App

Lecture 188 Defining a Data Model

Lecture 189 Working on the “Products” Grid & Item Widgets

Lecture 190 Styling & Theming the App

Lecture 191 Adding Navigation to the App

Lecture 192 Why State Management? And what is “State” and “State Management”?

Lecture 193 Understanding the “Provider” Package & Approach

Lecture 194 Working with Providers & Listeners

Lecture 195 [DART DEEP DIVE] Inheritance (“extends”) vs Mixins (“with”)

Lecture 196 Providing non-Objects

Lecture 197 Listening in Different Places & Ways

Lecture 198 Using Nested Models & Providers

Lecture 199 Exploring Alternative Provider Syntaxes

Lecture 200 Using “Consumer” instead of “Provider.of”

Lecture 201 Local State vs App-wide State

Lecture 202 Adding Shopping Cart Data

Lecture 203 Working with Multiple Providers

Lecture 204 Connecting the Cart Provider

Lecture 205 Working on the Shopping Cart & Displaying a Total

Lecture 206 Displaying a List of Cart Items

Lecture 207 Making Cart Items Dismissible

Lecture 208 Adding Product Detail Data

Lecture 209 Providing an Orders Object

Lecture 210 Adding Orders

Lecture 211 Adding an Orders Screen

Lecture 212 Using a Side Drawer

Lecture 213 Making Orders Expandable & Stateful Widgets vs Providers

Lecture 214 Wrap Up

Lecture 215 Useful Resources & Links

Section 9: Working with User Input & Forms [SHOP APP]

Lecture 216 Module Introduction

Lecture 217 Snackbars & Undoing “Add to Cart” Actions

Lecture 218 Using ScaffoldMessenger for Snackbars

Lecture 219 Showing Alert Dialogs

Lecture 220 Adding a “Manage Products” Page

Lecture 221 “Edit Product” Screen & A Problem

Lecture 222 Using Forms & Working with Form Inputs

Lecture 223 ListView or Column

Lecture 224 Managing Form Input Focus

Lecture 225 Multiline Inputs & Disposing Objects

Lecture 226 Adding an Image Preview

Lecture 227 Image Input & Image Preview

Lecture 228 Submitting Forms

Lecture 229 Validating User Input

Lecture 230 Adding Validation to All Inputs

Lecture 231 [OPTIONAL] Working with Regular Expressions

Lecture 232 Saving New Products

Lecture 233 Time to Update Products!

Lecture 234 Allowing Users to Delete Products

Lecture 235 Wrap Up

Lecture 236 Useful Resources & Links

Section 10: Sending Http Requests [SHOP APP]

Lecture 237 Module Introduction

Lecture 238 On-Device vs Web Storage

Lecture 239 How to Connect Flutter to a Database

Lecture 240 Preparing Our Backend

Lecture 241 How To Send Http Requests

Lecture 242 Using the Http Package

Lecture 243 Sending POST Requests

Lecture 244 Working with Futures in Dart

Lecture 245 [DART DEEP DIVE] Futures & Async Code

Lecture 246 Showing a Loading Indicator

Lecture 247 Handling Errors Gracefully

Lecture 248 Working with “async” & “await”

Lecture 249 Fetching Data, initState & “of(context)”

Lecture 250 How to Transform Fetched Data

Lecture 251 Implementing Pull-to-Refresh

Lecture 252 Updating Data via PATCH Requests

Lecture 253 Utilizing Optimistic Updating

Lecture 254 Creating Custom Exceptions & More Error Handling

Lecture 255 A Challenge For You!

Lecture 256 Updating the “Favorite” Status Optimistically

Lecture 257 Storing Orders in the Web

Lecture 258 Fetching Orders & Fixing an Issue

Lecture 259 Using the “FutureBuilder” Widget & Improving the Code

Lecture 260 Wrap Up

Lecture 261 Useful Resources & Links

Section 11: Adding User Authentication [SHOP APP]

Lecture 262 Module Introduction

Lecture 263 How Authentication Works

Lecture 264 Prepare Backend

Lecture 265 Adding the Auth Screen

Lecture 266 Signup Requests & URLs

Lecture 267 Adding User Signup

Lecture 268 Allowing Users to Log In

Lecture 269 Handling Authentication Errors

Lecture 270 Managing the Auth Token Locally (in the App)

Lecture 271 Using the “ProxyProvider” and Attaching the Token to Outgoing Http Requests

Lecture 272 Adding the Token to All Requests

Lecture 273 Connecting the “Favorite” Status to Users

Lecture 274 Attaching Products to Users & Filtering By Creator

Lecture 275 Attaching Orders to Users

Lecture 276 Adding a Logout Functionality

Lecture 277 Automatically Logging Users Out (After Some Time)

Lecture 278 Automatically Logging Users In

Lecture 279 Wrap Up

Lecture 280 Useful Resources & Links

Section 12: Adding Animations [SHOP APP]

Lecture 281 Module Introduction

Lecture 282 Animations From Scratch (Completely Manually Controlled)

Lecture 283 Using the “AnimatedBuilder” Widget

Lecture 284 Working with the “AnimatedContainer”

Lecture 285 More Built-in Animation & Transition Widgets

Lecture 286 Fading Loaded Images In (And Showing a Placeholder)

Lecture 287 Adding a “Hero” Transition

Lecture 288 Working with Slivers

Lecture 289 Practice: Animating Order Boxes

Lecture 290 A Fix for the Latest Version of Flutter

Lecture 291 Implementing Custom Route Transitions

Lecture 292 Wrap Up

Lecture 293 Useful Resources & Links

Section 13: Using Native Device Features (Camera, Maps, Location, …) [GREAT PLACES APP]

Lecture 294 Module Introduction

Lecture 295 Planning the App

Lecture 296 PlaceList & Place Provider Setup

Lecture 297 Adding the “Add Place” Screen & An Image Input

Lecture 298 Using Image Picker & The Device Camera

Lecture 299 Storing the Image on the Filesystem (on the Device)

Lecture 300 Managing Data & Images via the Provider Package

Lecture 301 Handling Errors

Lecture 302 Testing on Real Devices

Lecture 303 Preparing SQLite

Lecture 304 Storing & Fetching Data with SQLite

Lecture 305 Adding a Location Input & The “location” Package

Lecture 306 Fetching the User Coordinates

Lecture 307 Displaying a Static Map Snapshot

Lecture 308 Rendering a Dynamic Map (via Google Maps)

Lecture 309 Allowing Users to Pick a Location on the Map

Lecture 310 Storing the Location in SQLite

Lecture 311 Adding a “Place Detail” Screen & Opening the Map in “readonly” Mode

Lecture 312 Wrap Up

Lecture 313 Useful Resources & Links

Section 14: Firebase, Image Upload, Push Notifications – Building a Chat App

Lecture 314 Module Introduction

Lecture 315 What is Firebase?

Lecture 316 Creating a New App

Lecture 317 Getting Started with Firebase

Lecture 318 Important: Flutter Firebase Versions

Lecture 319 Getting Started with Flutter & the Firebase SDK

Lecture 320 Adding “GoogleServices-Info.plist” correctly to iOS

Lecture 321 Rendering Stream Data with StreamBuilder

Lecture 322 Adding Data

Lecture 323 A Basic Authentication Screen

Lecture 324 Adding an App Theme

Lecture 325 Creating an Authentication Form

Lecture 326 Connecting Auth Form & Auth Screen

Lecture 327 Adding the firebase_auth Package

Lecture 328 Implementing Authentication

Lecture 329 Storing Extra User Data

Lecture 330 Finishing Authentication & Logout

Lecture 331 Adding Firebase Security Rules

Lecture 332 Listening to Chat Messages

Lecture 333 Sending & Ordering Chat Messages

Lecture 334 Creating a Basic Chat Bubble Widget

Lecture 335 Improving the Chat Bubbles

Lecture 336 Testing on Multiple Devices

Lecture 337 Displaying User Names

Lecture 338 ImagePicker: Latest Version

Lecture 339 Adding an Image Picker

Lecture 340 Preparing File Upload & Validating Images

Lecture 341 Uploading Images

Lecture 342 Improving Image Upload

Lecture 343 Running on a Real iOS Device

Lecture 344 Displaying User Images

Lecture 345 How Push Notifications Work

Lecture 346 Adding the firebase_messaging Package

Lecture 347 An Introduction to Firebase Cloud Messaging

Lecture 348 Android & Push Notifications

Lecture 349 iOS & Push Notifications

Lecture 350 Handling Push Notifications

Lecture 351 Getting Started with Firebase Cloud Functions

Lecture 352 MUST READ: Firebase Cloud Functions & Billing

Lecture 353 Setting a Firestore Trigger

Lecture 354 Sending Automated Push Notifications

Lecture 355 Polishing & Wrap Up

Lecture 356 Updating to the latest Firebase Package Versions

Lecture 357 Module Resources

Section 15: Running Native Swift, ObjectiveC, Java or Kotlin Code

Lecture 358 Module Introduction

Lecture 359 Using a Proper Project Setup

Lecture 360 Sending a Method Call from Flutter

Lecture 361 Running Android Code

Lecture 362 Running iOS Code

Lecture 363 Wrap Up

Lecture 364 Useful Resources & Links

Section 16: Publishing to the App Stores

Lecture 365 Module Introduction

Lecture 366 Preparing the Code

Lecture 367 Preparing the App Configuration

Lecture 368 Preparing Third-Party Services

Lecture 369 Adding Icons & Splash Screens

Lecture 370 Publishing Android Apps

Lecture 371 Publishing iOS Apps

Lecture 372 Useful Resources & Links

Section 17: Roundup & Next Steps

Lecture 373 You did it!

Lecture 374 Your Next Steps (To Become an Awesome Developer!)

Lecture 375 How to Plan & Develop Successful Apps

Section 18: Flutter 2 Update

Lecture 376 Flutter 2 – What’s New? What’s The Impact On This Course?

Lecture 377 “Old” vs “New” Button Widgets

Section 19: Roundup

Lecture 378 Course Roundup

Lecture 379 Bonus: More Content!

Beginner and experienced developers who are interested in diving into mobile app development using one language for both platforms,Experienced iOS or Android developers who want to build cross-platform (iOS + Android) apps with one single programming language

Course Information:

Udemy | English | 42h 35m | 20.62 GB
Created by: Academind by Maximilian Schwarzmüller

You Can See More Courses in the Developer >> Greetings from CourseDown.com

New Courses

Scroll to Top