Flutter & Dart - The Complete Guide [2020 Edition]
4.6 (23,082 ratings)
Course Ratings are calculated from individual students’ ratings and a variety of other signals, like age of rating and reliability, to ensure that they reflect course quality fairly and accurately.
86,971 students enrolled

Flutter & Dart - The Complete Guide [2020 Edition]

A Complete Guide to the Flutter SDK & Flutter Framework for building native iOS and Android apps
Bestseller
4.6 (23,082 ratings)
Course Ratings are calculated from individual students’ ratings and a variety of other signals, like age of rating and reliability, to ensure that they reflect course quality fairly and accurately.
86,971 students enrolled
Last updated 6/2020
English
English, French [Auto], 6 more
  • German [Auto]
  • Indonesian [Auto]
  • Italian [Auto]
  • Polish [Auto]
  • Portuguese [Auto]
  • Spanish [Auto]
Current price: $119.99 Original price: $199.99 Discount: 40% off
2 hours left at this price!
30-Day Money-Back Guarantee
This course includes
  • 41 hours on-demand video
  • 34 articles
  • 302 downloadable resources
  • Full lifetime access
  • Access on mobile and TV
  • Assignments
  • Certificate of Completion
Training 5 or more people?

Get your team access to 4,000+ top Udemy courses anytime, anywhere.

Try Udemy for Business
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
Course content
Expand all 365 lectures 41:08:57
+ Introduction
16 lectures 01:35:33

What is Flutter? What is this technology about and why is it awesome? Learn how Flutter helps you build native iOS and Android apps in this lecture!

Preview 05:54

Learning alone is absolutely fine but finding learning partners might be a nice thing, too. Our learning community is a great place to learn and grow together - of course it's 100% free and optional!

Join our Online Learning Community
00:21

We know what Flutter is, now let's take a look behind the scenes. Because it's pitch sounds a bit magic (create native cross-platform apps) - how does it work under the hood?

Preview 04:47

Let's continue our look under Flutter's hood. In this lecture, you'll learn how the Flutter & Dart code you write gets compiled to native/ machine code.

Preview 03:12

Flutter is under active development, hence it's important to understand its versioning scheme and how it's kept up-to-date.

Preview 02:49

Let's get started with Flutter! Time to install it - in this lecture, we'll walk through the installation on macOS.

Preview 19:35

With Flutter installed on macOS, it's now time to set up the development environment, so that we can get productive as quickly as possible.

Preview 04:08
Android Licenses & XMLSchema Error
00:41

Let's install Flutter on Windows so that we can build amazing apps there - in this lecture, I'll walk you through all the installation steps.

Preview 31:46

With Flutter installed, let's explore how to set up a development environment that allows us to write code efficiently.

Preview 03:45

Flutter uses Google's Material Design system - in this lecture, we'll explore what this means and what this is about.

Preview 01:15

There actually are other technologies, which have a similar pitch as Flutter has it (build cross-platform apps with one single language or codebase). In this lecture, I'll explore some alternatives and compare Flutter to them.

Preview 06:06

We know what Flutter is about - in this lecture you'll now find out what this course has to offer and how the content is structured.

Preview 06:40

To me, it's super-important that you're getting a lot out of this course - so here are some best practices on how to take the course and use the course materials.

Preview 02:40
Useful Resources & Links
00:05
+ Flutter Basics [QUIZ APP]
40 lectures 04:29:49
Module Introduction
02:25
Creating a New Project
12:15
An Overview of the Generated Files & Folders
08:20
More on Git (Version Control System)
00:26
Analyzing the Default App
05:32
Dart Basics
17:17
More Dart Basics
13:06
Dart Basics - Summary
04:57

Time to check your knowledge of the Dart basics!

Dart Fundamentals
7 questions
Building an App From Scratch
11:02
Running the App on an Emulator
03:25
Class Constructors & Named Arguments
08:29
First Summary & Additional Syntax
08:10

Is everything clear thus far? Time to check it!

Flutter App Basics
3 questions
Building a Widget Tree
07:40
Visible (Input / Output) & Invisible (Layout / Control) Widgets
03:13
Adding Layout Widgets
06:52

Widgets are THE core building block of Flutter apps. Is everything clear about them?

Widget Basics
6 questions
Connecting Functions & Buttons
07:30
Anonymous Functions
03:20
Updating Widget Data (Or: Using StatelessWidget Incorrectly)
06:36
[DART DEEP DIVE] Understanding Lists
01:30
Updating Correctly with Stateful Widgets
11:58

When do you use which type of widget - and why? Time to confirm your knowledge!

Stateful & Stateless Widgets
3 questions
A Brief Look Under The Hood
02:27
Using Private Properties
05:16
Creating a New, Custom Widget
11:50
First Styling & Layouting Steps
08:01
Enums & Multiple Constructors
04:06
Official Docs & The Widget Catalog
02:39
Passing Callback Functions Around
10:38
Introducing Maps
05:52
Mapping Lists to Widgets
10:24
final vs const
10:50

"Advanced Basics"? Yeah... kind of. Time to check whether you're still on board!

Advanced Flutter & Dart Basics
6 questions
Introducing "if" Statements
06:51
[DART DEEP DIVE] More on "if" Statements
11:15
[DART DEEP DIVE] The "null" Value
02:03
Outputting Widgets Conditionally
02:20
Splitting the App Into Widgets
09:57
Calculating a Total Score
07:46
Getters & "else-if"
06:34
Resetting the Quiz
04:53
It's now time to practice your basic Flutter skills.
Time to Practice: Flutter Basics
1 question
Wrap Up
01:53
Module Resources
00:09
+ Running Apps on Different Devices & Debugging Apps
11 lectures 37:54
Module Introduction
02:00
Running the App on a Real Android Device
03:56
Running the App on an iOS Emulator
05:54
Running the App on a Real iOS Device
01:52
Working with the Emulators / Using the Emulators
02:25
Understanding Error Messages & Fixing Errors
05:27
Using the Debugger
06:21
Getting Started with the Dart DevTools
04:54
Understanding the Repaint Rainbow
03:23
Wrapping up the Dart DevTools
01:34
Useful Resources & Links
00:08
+ Widgets, Styling, Adding Logic - Building a Real App [PERSONAL EXPENSES APP]
47 lectures 05:02:18
Module Introduction
03:19
An Overview of the Core Flutter Widgets
09:42
Planning the App
02:43
Combining Widgets
09:18
Understanding Column Alignment
06:11

Let's practice working with Columns and Rows!

Columns & Rows
3 questions
Not a Widget: Adding a Transaction Model & Transaction Data
08:28
Mapping Data Into Widgets
03:39
Building a Custom List Item
05:26
Styling a Container
05:12
Styling Text
02:46
More Styling!
01:55
Styling Time!
3 questions
Containers vs Columns vs Rows
03:38
Using String Interpolation
05:21
Installing External Packages & Formatting Dates
07:29
DateFormat Patterns
00:33
Adding Text Input Widgets (TextField)
09:41
Fetching User Input
09:29
Splitting the App Into Widgets
12:44
Connecting Widgets & Managing Data / State
06:33
Adding User Transactions to the List
03:58
Making the List Scrollable!
06:11
Working with ListViews
12:02
Lists, Scrolling & Text Input
3 questions
Further Input & Output Styling and Configuration
08:28
Adding AppBar Buttons & Floating Action Buttons
04:32
Showing a Modal Bottom Sheet
09:32
Improving & Styling the Modal Bottom Sheet
06:30
Configuring & Using Themes
08:42
Custom Fonts & Working with Text Themes
11:07
Theming
3 questions
Adding Images to the App
07:57
Planning the Chart Widget
04:22
Looping Through Lists
13:47
More on "for" Loops
00:28
Deriving Recent Transactions
07:24
Creating Bars for our Chart
10:59
Populating the Chart with Values
06:19
Finishing the Chart Bars
05:25
Flexible & Expanded: Deep Dive
10:23
Adding a ListTile Widget
05:29
Improving the Overall Chart
03:08
Widgets & Configuring Widgets - Summary / Overview
05:07
Getting Started with Date Selection
05:19
Showing a DatePicker
11:13
Adding Transactions with a Date
03:07
Deleting Transactions & Using IconButtons
07:02
Final Polishing!
05:34
Wrap Up
03:54
Useful Resources & Links
00:11
+ Responsive & Adaptive User Interfaces and Apps
21 lectures 01:25:23
Module Introduction
01:37
What does "Responsive" and "Adaptive" Mean?
05:55
Examples: Where we could improve the App!
03:04
Calculating Sizes Dynamically
09:13
Working with the "textScaleFactor"
00:38
Using the LayoutBuilder Widget
07:44
Responsiveness
3 questions
Controlling the Device Orientation
04:19
Rendering Alternative Landscape Content - 1
04:42
Finishing Landscape Mode
02:58
Showing Different Content Based on Device Orientation
05:33
Respecting the Softkeyboard Insets
03:43
Using the Device Size in Conditions
04:10
Managing the MediaQuery Object
02:06
Checking the Device Platform
05:36
Using Cupertino (iOS) Widgets
09:05
Using the SafeArea
01:43
More Cupertino Styles
03:09
Using Cupertino Buttons
03:11
Creating Custom Adaptive Widgets
05:04
Adaptive Widgets
3 questions
Wrap Up
01:43
Useful Resources & Links
00:09
+ Widget & Flutter Internals - Deep Dive
18 lectures 02:00:03
Module Introduction
02:32
The Problem At Hand
03:13
Widget Tree & Element Tree - What, Why and How?
10:45
How Flutter Rebuilds & Repaints the Screen
08:48
How Flutter Executes build()
09:18
Using "const" Widgets & Constructors
11:16
Widgets, Elements, build()
4 questions
Writing Good Code
03:57
Extracting Widgets
06:07
Using Builder Methods
10:21
Time to build your own builder methods - how meta!
Time to Practice: Builder Methods
1 question
Understanding the Widget Lifecycle
12:55
Calling super.initState() etc.
00:48
Understanding the App Lifecycle
09:25
Understanding Context
06:46
A Problem with Lists & Stateful Widgets
05:34
Understanding the Problem Root
05:09
Using Keys
11:15
Keys, Lists, Stateful Widgets
3 questions
Wrap Up
01:41
Useful Resources & Links
00:13
+ Navigation & Multiple Screens [MEALS APP]
29 lectures 04:09:18
Module Introduction
02:23
Planning the App
04:45
Starting With The App - Adding Base Data
11:18
Creating a Grid & Working with Linear Gradients
07:49
Registering a Screen as the Main Screen
03:10
Styling & Theming
07:04
Navigating to a New Page
10:10
Passing Data via the Constructor
02:38
Using Named Routes & Passing Data With Named Routes
06:42

With the basics about screens and navigation out of the way, it's time to test your knowledge!

Screens & Navigation
5 questions
Diving Deeper into Named Routes
02:46
Adding a Meal Model & Data
12:44
Selecting Meals for a Chosen Category
04:56
Displaying Recipe Items & Using Network Images
14:59
Finishing the Meal List Item
15:21
Navigating to the Meal Detail Page
07:17
onGenerateRoute & onUnknownRoute
05:27

You learned more about navigation, time to test it!

More Navigation!
2 questions
Finishing the Meal Detail Page
17:34
Adding a TabBar to the Appbar
10:26
Adding a Bottom TabBar
13:12
Adding a Custom Drawer
12:37
Adding Links to the Drawer
04:03

Time to practice tabs and drawers!

Tabs & Drawers!
2 questions
Replacing Pages (Instead of Pushing)
04:21
Popping Pages & Passing Data Back
17:06
Replacing, Popping & Data
3 questions
Adding Filter Switches
08:31
Adding Filtering Logic
16:19
Adding a "Mark as Favorite" Feature
19:57
A Problem!
02:40
Wrap Up
02:55
Useful Resources & Links
00:08
+ State Management [SHOP APP]
30 lectures 03:54:32
Module Introduction
02:13
Planning the App
06:55
Defining a Data Model
06:32
Working on the "Products" Grid & Item Widgets
16:24
Styling & Theming the App
05:14
Adding Navigation to the App
10:30
Why State Management? And what is "State" and "State Management"?
06:29
Understanding the "Provider" Package & Approach
02:55
Working with Providers & Listeners
21:09
[DART DEEP DIVE] Inheritance ("extends") vs Mixins ("with")
06:23
Providing non-Objects
00:52
Listening in Different Places & Ways
05:58

Time to check your knowledge on State Management and the "Provider Approach".

State, State Management & The Provider Package/ Approach
3 questions
Using Nested Models & Providers
14:03
Exploring Alternative Provider Syntaxes
06:55
Using "Consumer" instead of "Provider.of"
07:25
Local State vs App-wide State
15:40
Adding Shopping Cart Data
08:39
More on State Management & The Provider Package
3 questions
Working with Multiple Providers
03:41
Connecting the Cart Provider
11:31
Working on the Shopping Cart & Displaying a Total
11:37
Displaying a List of Cart Items
11:17
Making Cart Items Dismissible
08:47
Adding Product Detail Data
04:49
Providing an Orders Object
07:44
Adding Orders
02:47
Adding an Orders Screen
08:11
Using a Side Drawer
05:45
Making Orders Expandable & Stateful Widgets vs Providers
10:29
Wrap Up
03:29
Useful Resources & Links
00:08
+ Working with User Input & Forms [SHOP APP]
19 lectures 02:02:58
Module Introduction
03:02
Snackbars & Undoing "Add to Cart" Actions
10:30
Showing Alert Dialogs
07:12
Adding a "Manage Products" Page
14:15
"Edit Product" Screen & A Problem
05:06
Using Forms & Working with Form Inputs
07:59
ListView or Column
00:49
Managing Form Input Focus
04:35
Multiline Inputs & Disposing Objects
04:11
Image Input & Image Preview
13:15
Submitting Forms
12:01
Validating User Input
04:14
Adding Validation to All Inputs
09:50
[OPTIONAL] Working with Regular Expressions
01:08
Saving New Products
03:52
Time to Update Products!
16:19
Allowing Users to Delete Products
03:39
Wrap Up
00:53
Useful Resources & Links
00:07
+ Sending Http Requests [SHOP APP]
24 lectures 02:45:43
Module Introduction
02:05
On-Device vs Web Storage
04:08
How to Connect Flutter to a Database
03:36
Preparing Our Backend
04:31
How To Send Http Requests
05:56
Sending POST Requests
10:55
Working with Futures in Dart
07:35
[DART DEEP DIVE] Futures & Async Code
09:27
Http Requests & Futures
5 questions
Showing a Loading Indicator
06:59
Handling Errors Gracefully
12:11
Working with "async" & "await"
09:52
Fetching Data, initState & "of(context)"
08:27
How to Transform Fetched Data
07:38
Implementing Pull-to-Refresh
04:12
Updating Data via PATCH Requests
06:35
Utilizing Optimistic Updating
08:07
Creating Custom Exceptions & More Error Handling
09:05
A Challenge For You!
01:48
Updating the "Favorite" Status Optimistically
06:38
Storing Orders in the Web
11:29
Fetching Orders & Fixing an Issue
12:21
Using the "FutureBuilder" Widget & Improving the Code
10:06
Wrap Up
01:54
Useful Resources & Links
00:08
Requirements
  • 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!
Description

The entire course was completely re-recorded and updated - it's totally up-to-date with the latest version of Flutter!

With the latest update, I also added Push Notifications and Image Upload!

---

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 Windows

  • A thorough introduction to Flutter, Dart and the concept behind widgets

  • An overview of the built-in widgets and how you may add your own ones

  • Debugging tipps & tricks

  • Page navigation with tabs, side drawers and stack-based navigation

  • State management solutions

  • Handling and validating user input

  • Connecting your Flutter app to backend servers by sending Http requests

  • User authentication

  • Adding Google Maps

  • Using native device features like the camera

  • Adding beautiful animations & page transitions

  • Image Upload

  • Push Notifications - manual approach and automated

  • How to publish your app to the app stores

  • And 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 Android

  • You want to explore the full set of features Flutter offers

  • Don't want to spend hours learning two completely different languages

Course prerequisites:

  • Basic programming language knowledge will help a lot but is not a hard requirement

  • You DON'T need to know Flutter or Dart

  • You DON'T need to know iOS (Swift/ObjectiveC) or Android (Java)

---

As mentioned above, the course was updated from scratch - old, now obsolete content (~25h) is temporarily kept around for existing students ([LEGACY] sections) and will eventually be removed.

Who this course is for:
  • 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