Mobile Apps


Flutter & Dart - The Complete Guide [2021 Edition]

A Complete Guide to the Flutter SDK & Flutter Framework for building native iOS and Android apps

4.63 (31373 reviews)



41.5 hours


Jan 2021

Last Update
Regular Price

What you will 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


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)


Flutter & Dart - The Complete Guide [2021 Edition]
Flutter & Dart - The Complete Guide [2021 Edition]
Flutter & Dart - The Complete Guide [2021 Edition]
Flutter & Dart - The Complete Guide [2021 Edition]




What is Flutter?

Join our Online Learning Community

Understanding the Flutter Architecture

How Flutter & Dart Code Gets Compiled To Native Apps

Understanding Flutter Versions

Flutter macOS Setup

macOS Development Environment

Flutter Windows Setup

Windows Development Environment

Flutter & Material Design

Flutter Alternatives

Course Outline

How To Get The Most Out Of The Course

Useful Resources & Links

Flutter Basics [QUIZ APP]

Module Introduction

Creating a New Project

An Overview of the Generated Files & Folders

More on Git (Version Control System)

Analyzing the Default App

Dart Basics

More Dart Basics

Dart Basics - Summary

Dart Fundamentals

Building an App From Scratch

Running the App on an Emulator

Class Constructors & Named Arguments

First Summary & Additional Syntax

Flutter App Basics

Building a Widget Tree

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

Adding Layout Widgets

Widget Basics

Connecting Functions & Buttons

Anonymous Functions

Updating Widget Data (Or: Using StatelessWidget Incorrectly)

[DART DEEP DIVE] Understanding Lists

Updating Correctly with Stateful Widgets

Stateful & Stateless Widgets

A Brief Look Under The Hood

Using Private Properties

Creating a New, Custom Widget

First Styling & Layouting Steps

Enums & Multiple Constructors

Official Docs & The Widget Catalog

Passing Callback Functions Around

Introducing Maps

Mapping Lists to Widgets

final vs const

Advanced Flutter & Dart Basics

Introducing "if" Statements

[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

Module Resources

Running Apps on Different Devices & Debugging Apps

Module Introduction

Running the App on a Real Android Device

Running the App on an iOS Emulator

Running the App on a Real iOS Device

Working with the Emulators / Using the Emulators

Understanding Error Messages & Fixing Errors

Using the Debugger

Getting Started with the Dart DevTools

Understanding the Repaint Rainbow

Wrapping up the Dart DevTools

Useful Resources & Links

Widgets, Styling, Adding Logic - Building a Real App [PERSONAL EXPENSES APP]

Module Introduction

An Overview of the Core Flutter Widgets

Planning the App

Combining Widgets

Understanding Column Alignment

Columns & Rows

Not a Widget: Adding a Transaction Model & Transaction Data

Mapping Data Into Widgets

Building a Custom List Item

Styling a Container

Styling Text

More Styling!

Styling Time!

Containers vs Columns vs Rows

Using String Interpolation

Installing External Packages & Formatting Dates

DateFormat Patterns

Adding Text Input Widgets (TextField)

Fetching User Input

Splitting the App Into Widgets

Connecting Widgets & Managing Data / State

Adding User Transactions to the List

Making the List Scrollable!

Working with ListViews

Lists, Scrolling & Text Input

Further Input & Output Styling and Configuration

Adding AppBar Buttons & Floating Action Buttons

Showing a Modal Bottom Sheet

Improving & Styling the Modal Bottom Sheet

Configuring & Using Themes

Custom Fonts & Working with Text Themes


Adding Images to the App

Planning the Chart Widget

Looping Through Lists

More on "for" Loops

Deriving Recent Transactions

Creating Bars for our Chart

Populating the Chart with Values

Finishing the Chart Bars

Flexible & Expanded: Deep Dive

Adding a ListTile Widget

Improving the Overall Chart

Widgets & Configuring Widgets - Summary / Overview

Getting Started with Date Selection

Showing a DatePicker

Adding Transactions with a Date

Deleting Transactions & Using IconButtons

Final Polishing!

Wrap Up

Useful Resources & Links

Responsive & Adaptive User Interfaces and Apps

Module Introduction

What does "Responsive" and "Adaptive" Mean?

Examples: Where we could improve the App!

Calculating Sizes Dynamically

Working with the "textScaleFactor"

Using the LayoutBuilder Widget


Controlling the Device Orientation

Rendering Alternative Landscape Content - 1

Finishing Landscape Mode

Showing Different Content Based on Device Orientation

Respecting the Softkeyboard Insets

Using the Device Size in Conditions

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

Adaptive Widgets

Wrap Up

Useful Resources & Links

Widget & Flutter Internals - Deep Dive

Module Introduction

The Problem At Hand

Widget Tree & Element Tree - What, Why and How?

How Flutter Rebuilds & Repaints the Screen

How Flutter Executes build()

Using "const" Widgets & Constructors

Widgets, Elements, build()

Writing Good Code

Extracting Widgets

Using Builder Methods

Understanding the Widget Lifecycle

Calling super.initState() etc.

Understanding the App Lifecycle

Understanding Context

A Problem with Lists & Stateful Widgets

Understanding the Problem Root

Using Keys

Keys, Lists, Stateful Widgets

Wrap Up

Useful Resources & Links

Navigation & Multiple Screens [MEALS APP]

Module Introduction

Planning the App

Starting With The App - Adding Base Data

Creating a Grid & Working with Linear Gradients

Registering a Screen as the Main Screen

Styling & Theming

Navigating to a New Page

Passing Data via the Constructor

Using Named Routes & Passing Data With Named Routes

Screens & Navigation

Diving Deeper into Named Routes

Adding a Meal Model & Data

Selecting Meals for a Chosen Category

Displaying Recipe Items & Using Network Images

Finishing the Meal List Item

Navigating to the Meal Detail Page

onGenerateRoute & onUnknownRoute

More Navigation!

Finishing the Meal Detail Page

Adding a TabBar to the Appbar

Adding a Bottom TabBar

Adding a Custom Drawer

Adding Links to the Drawer

Tabs & Drawers!

Replacing Pages (Instead of Pushing)

Popping Pages & Passing Data Back

Replacing, Popping & Data

Adding Filter Switches

Adding Filtering Logic

Adding a "Mark as Favorite" Feature

A Problem!

Wrap Up

Useful Resources & Links

State Management [SHOP APP]

Module Introduction

Planning the App

Defining a Data Model

Working on the "Products" Grid & 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

Using the Right Provider Package Version

Working with Providers & Listeners

[DART DEEP DIVE] Inheritance ("extends") vs Mixins ("with")

Providing non-Objects

Listening in Different Places & Ways

State, State Management & The Provider Package/ Approach

Using Nested Models & Providers

Exploring Alternative Provider Syntaxes

Using "Consumer" instead of "Provider.of"

Local State vs App-wide State

Adding Shopping Cart Data

More on State Management & The Provider Package

Working with Multiple Providers

Connecting the Cart Provider

Working on the Shopping Cart & Displaying a Total

Displaying a List of Cart Items

Making Cart 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

Useful Resources & Links

Working with User Input & Forms [SHOP APP]

Module Introduction

Snackbars & Undoing "Add to Cart" Actions

Showing Alert Dialogs

Adding a "Manage Products" Page

"Edit Product" Screen & A Problem

Using Forms & Working with Form Inputs

ListView or Column

Managing Form Input Focus

Multiline Inputs & Disposing Objects

Image Input & Image Preview

Submitting Forms

Validating User Input

Adding Validation to All Inputs

[OPTIONAL] Working with Regular Expressions

Saving New Products

Time to Update Products!

Allowing Users to Delete Products

Wrap Up

Useful Resources & Links

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 Dart

[DART DEEP DIVE] Futures & Async Code

Http Requests & Futures

Showing a Loading Indicator

Handling Errors Gracefully

Working with "async" & "await"

Fetching Data, initState & "of(context)"

How to Transform Fetched Data

Implementing Pull-to-Refresh

Updating Data via PATCH Requests

Utilizing Optimistic Updating

Creating Custom Exceptions & More Error Handling

A Challenge For You!

Updating the "Favorite" Status Optimistically

Storing Orders in the Web

Fetching Orders & Fixing an Issue

Using the "FutureBuilder" Widget & Improving the Code

Wrap Up

Useful Resources & Links

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 Errors

Managing the Auth Token Locally (in the App)

Avoiding Issues with Provider Package

Using the "ProxyProvider" and Attaching the Token to Outgoing Http Requests

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

Useful Resources & Links

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

Implementing Custom Route Transitions

Wrap Up

Useful Resources & Links

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

Using Image Picker & The Device Camera

Storing the Image on the Filesystem (on the Device)

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 "readonly" Mode

Wrap Up

Useful Resources & Links

Running Native Swift, ObjectiveC, Java or Kotlin Code

Module Introduction

Using a Proper Project Setup

Sending a Method Call from Flutter

Running Android Code

Running iOS Code

Wrap Up

Useful Resources & Links

Publishing to the App Stores

Module Introduction

Preparing the Code

Preparing the App Configuration

Preparing Third-Party Services

Adding Icons & Splash Screens

Publishing Android Apps

Publishing iOS Apps

Useful Resources & Links

Roundup & Next Steps

You did it!

Your Next Steps (To Become an Awesome Developer!)

How to Plan & Develop Successful Apps

Summary of the Course Update

What Changed? What's New? Why did I Update the Course?

Changes you should not miss

The [LEGACY] Sections

[LEGACY] Diving Into the Basics & Understanding Widgets

What does [LEGACY] mean?

Module Introduction

Creating a New Flutter Project

Exploring the Default Project Structure

Diving Into the "main.dart" File

Widgets in Flutter - Theory

Creating a Widget

Understanding Classes & Constructors

Adding the "Build" Method

Adding the Scaffold

Diving Deeper Into the Syntax

Adding Cards & Images

Diving Into the Official Docs

Adding a Button

Creating a Stateful Widget

Managing Data Inside Stateful Widgets

Adding the Stateful Widget & Lists

Splitting our Code Up

Creating the "Product Manager" Widget

Passing Data to Stateful Widgets

initState() and super.initState()

Understanding Lifecycle Hooks

Diving Into Google's Material Design

Understanding Additional Dart Features

Passing Data Up

Understanding "const" & "final"

Dart Types, Syntax & Core Features

Wrap Up

Useful Resources & Links

[LEGACY] Debugging Flutter Apps

Module Introduction

Fixing Syntax Errors

Understanding Runtime Errors & Runtime Messages

Dealing with Logical Errors

Using Breakpoints

Debugging the User Interface

More About Visual Helpers

Wrap Up

Useful Resources & Links

[LEGACY] Running the App on Different Devices

Testing Devices

How to Start the App

Testing a Real Android Device

Using the iOS Emulator & a Real Device

Running the App - Detailed Instructions

Using the Native IDE Consoles

[LEGACY] Working with Lists & Conditionals

Module Introduction

Creating Scrollable Lists with "ListView"

Optimizing the List Loading Behaviour

Rendering Content Conditionally

Alternative Approaches to Render Content Conditionally

One Important Gotcha

Wrap Up

Useful Resources & Links

[LEGACY] Navigation

Module Introduction

Adding Multiple Pages to our App

Adding Buttons

Implementing a Basic Navigation

Improving the Look of the Product Page

Passing Data Around ("Pushing" the Page)

Passing Information Back ("Popping" the Page)

Adding Reactions Upon Button Pressing

Adding the Basic Authentication Page & Replacing Routes

Adding the Sidedrawer & the Hamburger Icon

Understanding Stack Based Navigation

Adding Tabs

Finishing the Tab Navigation

Adding Named Routes

Parsing Route Data Manually

Lifting State Up

Using the Named Routes

Working with "onUnknownRoute" as Fallback

Adding Alert Dialogs

Showing a Modal

Wrap Up

Useful Resources & Links

[LEGACY] Handling User Input

Module Introduction

Saving User Input

Configuring Text Fields

Styling Text Fields

Fixing a Bug & Adding a Button

Using our Form to Create a New Product

Improving the Style of our Form

Fixing a Tiny "Error"

Adding a Switch

Wrap Up

Useful Resources & Links

[LEGACY] Diving Deeper Into Widgets

Module Introduction

Exploring the Widget Catalogue

There's More Than One Widget For The Job

The Most Important Widgets

Working with Text & Fonts

Working with Rows

Decorating Boxes & Styling a Price Tag

Setting Borders

Understanding "Expanded" & "Flexible"

Adding a Background Image

Centering Input Fields

Adding Icons to our Sidemenu

Adding Icon Buttons

Outsourcing Code into Separate Widgets

Refactoring our Code

Creating a Standardized Tile Widget

Adding Separate Methods for Specific Widgets

Optimizing our Project

Responsive Design Problems

Adding Media Queries

Understanding Media Queries with ListView

Working with Themes

Listening to Touch Events with the Gesture Detector

Wrap Up

Useful Resources & Links

[LEGACY] Working with Forms

Module Introduction

Using the Form Widget

Adding Form Validation

Advanced Validation

A Note on the "Price" Input and the Usage of Commas/ Dots

Closing the Keyboard

Submitting Data

Outputting Lists of Products

Re-Using the Product Create Form

Setting Initial Values

Updating Products

Ensuring Input Visibility

Wrap Up

Useful Resources & Links

[LEGACY] Improving the App

Module Introduction

Improving the List Tile

Adding the Dismissible Widget

Deleting Products Upon Swipe

Restructuring the Code & Wrap Up

Useful Resources & Links

[LEGACY] Models & State Management

Module Introduction

What can be Improved?

Adding a Product Model

Creating a Scoped Model

Connecting the Scoped Model

Providing the Scoped Model

Viewing Single Products

Editing & Deleting Products with the Scoped Model

Finishing the Product Model

A Note on Immutability

Creating the Toggle Favorite Method

Working on the Favorite Feature

Adding "notifylisteners"

Finishing the Favorite Feature

Fixing a Bug related to the "Favoriting" Feature

Adding a User Model

MUST READ: Mixins & The Latest version of Dart

Using Mixins to Merge Models

Logging in with the Main & the User Model

Connecting Models & Sharing Data

MUST READ: Changing Mixins Syntax

Improving the Code & Fixing an Error

MUST READ: Unselecting the Product after Editing

Wrap Up

Useful Resources & Links

[LEGACY] Flutter & HTTP

Module Introduction

Understanding the Backend Setup

Sending a POST Request

Using the Response

Getting Data From a Server

Transforming & Extracting Response Data

Displaying a Loading Spinner

Finishing the Loading Spinner

Updating Products

Deleting Products

Using Pull to Refresh

Adding "fadein" to the Image Placeholder

Adjusting the Scoped Model & the Selected Product

Fixing the Product Selection

Handling Error Responses

Generic Error Handling

Adding "async" "await"

Improving our Code

Wrap Up

Useful Resources & Links

[LEGACY] Authentication

Module Introduction

How Authentication Works

Adding a "Confirm Password" Textfield

Implementing the Signup Functionality

Handling Errors

Adding a Spinner Whilst Signing Up

Adding the Signin Functionality

Refactoring our Code

Authenticating Requests with Tokens

Storing the Token on the Device

Signing Users In Automatically

Adding a Logout Button

Adding Autologout

Route Protection & Redirection

Fixing the Manual Logout

Time for a Quick Recap Regarding our Code Structure

Adding Optimistic Updating to Store the Favorite Status

Fetching the Favorite Status

Allow Editing for own Posts Only

Wrap Up

Useful Resources & Links

[LEGACY] Adding Google Maps to our App

Module Introduction

Using MapView with the latest Flutter Version

Unlocking the Required APIs

Requesting Permissions

Preparing our Text Form Field

Adding a Static Dummy Map

Sending a Request to Convert an Address to Coordinates

Adding Geocoding & Maps with Real Coordinates

Working on the Map Control

Storing Location Data in the Database

Fixing a Bug

Loading Location Data from the Backend

Updating an Existing Product's Position

Adding the Update Method for the Location

Adding the Location Package

Using the Location Package with Version >=1.4

Getting the User Location

Preventing Memory Leaks

Displaying the Address

Showing a Fullscreen Map

Wrap Up

Useful Resources & Links

[LEGACY] Accessing the Device Camera

Module Introduction

Adding an Image Picker Button

Adding the "Use Camera" & "Gallery" Buttons

Connecting the "Choose" Buttons to the Image Picker

Adding an Image Preview

Adding Text Editing Controllers

Setting Up Firebase Cloud Functions

Adjusting Firebase Functions (Fixing an Error)

Adding Server Side Code

Reading Incoming Files & Fields

Storing Data and Move it to a Temporary Storage

Deploying our Firebase Cloud Function

Configuring the Upload Request

Setting Headers to Add the Token

Fixing an Error

Fetching & Using Images

Previewing & Editing the Image

Adding the Image Upload Flow

Deleting Images When Deleting a Product

Wrap Up

Useful Resources & Links

[LEGACY] Adding Animations to our Project

Module Introduction

Adding Floating Action Buttons (FABs)

Adding Functionality to our Favorite Button

Working on the Contact Button

Animating the Contact Icon

Animating the Favorite Icon

Animating the Options Button

Fading the Password Field In & Out

Sliding the Password Field In & Out

Adding Hero Widgets

Adding the Sliver Effect

Adding Route Transitions

Wrap Up

Useful Resources & Links

[LEGACY] Polishing & Bugfixing

Module Introduction

Fixing an Autologout Bug

Fixing the Price Input in Landscape Mode

Fixing the Filtered Product Index

Fixing the Product Title Style & the Favorite Product Selection

Toggling the Favorite Status

Clearing All Products Before Fetching

Testing the iPhone & Fixing the Product Reset Logic

Adding Space on the Product Card

Using Flutter Analyze

Possible Code Restructurings

Managing Global Values

Testing the App on an Android Device

Testing the App on an iPhone & Fixing the European Decimal Comma

Useful Resources & Links

[LEGACY] Running Platform Specific Code

Module Introduction

Understanding Material Design & Cupertino

Detecting the Platform

Using Platform Specific Widgets

Adding a Platform Specific Theme

When Should we Use Platform Specific Themes?

iOS Support since Flutter 0.8.2

Wrap Up

Useful Resources & Links


Bonus: More Content!


Harshil9 October 2020

I saw Youtube video that satisfied me.There Such a nice animation and example .than i bought this course.

Steve8 October 2020

i need to learn dart first, before starting this course, practicing is the best way to learn, we can learn from others platforms too

Wandumi8 October 2020

The course is just right, it is what I expected to get from it.. Cant ask for more, 4 stars cause Havent yet finish what I am about to achieve with it lol

Alistair7 October 2020

Exactly what I was looking for. Best part is near the end when you start changing and writing things before Max does in the video.

Ilkercankaya6 October 2020

This course is excellent but please make a advanced flutter tutorial. This is good for beginners to intermediate level. I would love to buy an advanced flutter tutorial after finishing this.

Benoit26 February 2020

Definitely a very good course! New concepts are explained in a clear way and are used toward building different apps throughout the course. After having been through all the lectures and assignments, this will most likely become a go-to reference source when building new applications.

Lake26 February 2020

Why make a student go through all of the trouble of setting up Android Studio, only to then say "we're not going to use it in this course"? A total waste of time, and HD storage! Poor planning, poor guidance leads to poor ratings

Amal24 February 2020

I still didn't finish the course, but until now everything is clear and great, the most beautiful thing in this course is developing multiple apps, when I started the course, it was difficult for me to remember how to write the code, now I'm write it without before watching the code of max, moreover, everything is explained in details, it is not like other courses where the instructor write code without explaining why he wrote it and from where this code comes, I think if someone want to be real flutter developer, he/she should watch this course and build the applications that provided in this course, it is great that the applications in this course has the most needed features that we find in most of the mobile applications, thank you Max for spending time and effort in preparing this course material

Gabe23 February 2020

Maximilian is my favorite udemy instructor for everything relating to software development! already starting off great in this flutter course.

Bahadirhan22 February 2020

Max is the greatest instructor ever. Lectures are comprehensive, divided into small components and he is explaining every important detail. I suggest everyone you will not regret it!

Alexandru21 February 2020

The example projects are great, the instructor explains everything he does clearly. It's a great course for a beginner who never worked with Dart/Flutter.

Paul20 February 2020

Perfect match for me. I've been writing Ionic and ExtJs apps for a while but am excited to learn about something that looks like it is gaining a lot of traction.

SIPL20 February 2020

Great it covers all details in very depth what you get here you get nowhere , I mostly like the very correct software installation process which is all other sources wrong

Conrado20 February 2020

Max da un curso genial. Ya estoy trabajando e implementando todo lo que aprendimos en el curso.. Muy recomendado!!

Jeremy14 February 2020

I'm usually reluctant with using the word, but this course is "perfect". For me, it is the best introduction to Dart and the Flutter framework I could possibly wish for. After drinking some coffee, playing at 1.25 speed and skipping some obvious parts, the rhythm is just perfect. The explanations are clear, and the course content is up to date. Side narratives (going into detail about a specific topic) are effective and don't distract from the main course. There is a little repetition of the material, but only for truly important parts. I'm telling you this from the perspective of a developer with ~8 years of experience in common programming languages (Python, Java, Javascript, Php, C++, C#, etc...). Still, I think this course is very adequate for beginners and advanced users alike, as it not only teaches the specifics of Dart, but also about good programming practices in general. I was smiling when, at the beginning of the course, we are told to stark form a blank file, and not to copy things that are already there - this is exactly what I needed in order to understand this framework, not just to copy templates.


Expired7/3/201995% OFF
Expired11/14/201993% OFF
Expired5/4/202095% OFF
Expired5/20/202094% OFF
Expired7/12/202094% OFF
Expired12/17/202094% OFF


Udemy ID


Course created date


Course Indexed date
Course Submitted by

Android PlayStore
Apple Appstore