Flutter & Firebase: Build a Complete App for iOS & Android
4.7 (1,167 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.
4,720 students enrolled

Flutter & Firebase: Build a Complete App for iOS & Android

Learn Dart, Flutter & Firebase by Google, and build a real-world, production ready app
4.7 (1,162 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.
4,720 students enrolled
Created by Andrea Bizzotto
Last updated 5/2020
English
English [Auto-generated]
Current price: $139.99 Original price: $199.99 Discount: 30% off
5 hours left at this price!
30-Day Money-Back Guarantee
This course includes
  • 22 hours on-demand video
  • 25 articles
  • 240 downloadable resources
  • Full lifetime access
  • Access on mobile and TV
  • 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
  • Build a complete, real-world app with Flutter & Firebase
  • Write iOS & Android apps with a single codebase
  • Write production-ready code following best practices and become a competent Flutter developer
  • Fast-track your Flutter learning with practical tips and proven techniques
Course content
Expand all 422 lectures 21:58:45
+ Introduction to Dart
37 lectures 01:38:31
The Dart Language
02:25
Introduction to Dartpad
00:48
String interpolation
03:03
Type inference with var
03:13
Var and final
01:54
The dynamic keyword
01:53
Introduction to functions
04:18
Function return types
02:05
Optional parameters, nullability and default values
02:31
Named parameters
01:58
The arrow operator
01:51
Introduction to classes
02:01
Class constructors
03:05
Instance methods
02:14
Inheritance
02:56
The super constructor
01:59
The base Object class and the toString method
01:48
Overriding the toString method
05:25
Abstract classes
03:21
More on abstract classes
02:33
Using abstract classes with functions
01:54
Computed properties
02:39
Mixins
04:37
Introduction to lists
03:43
Introduction to maps
03:31
Generics and type annotations
04:53
If and else statements
03:51
The ternary operator
02:25
The while loop
03:13
The for loop
01:59
Closures and the fold method
04:12
Enumerations
02:45
Switch statements
02:49
Wrap-up
01:11
Useful Links & Resources
00:03
+ Flutter setup on macOS
11 lectures 30:56
macOS setup and Flutter 1.x
00:18
Flutter setup on macOS
02:39
Setting the PATH variable
04:26
Flutter doctor
00:50
Xcode and iOS simulator setup
02:17
Installing Android Studio
05:54
Installing the Android emulator
02:20
Running Flutter from the command line
05:21
Flutter setup on Android Studio
03:35
Installing Visual Studio Code
03:11
Useful Links & Resources
00:05
+ Flutter setup on Windows
9 lectures 22:28
Flutter setup on Windows
01:27
Updating the path variable
02:09
Flutter doctor
00:54
Installing Android Studio
04:27
Installing the Android emulator
03:18
Running Flutter from the command line
02:57
Flutter setup on Android Studio
04:19
Installing Visual Studio Code
02:52
Useful Links & Resources
00:05
+ Introduction to Flutter
14 lectures 30:01
Creating a Flutter project with Android Studio
03:28
A tour of the project folders
02:40
Running the Android emulator and iOS simulator
02:09
Overview of the Flutter counter app
01:08
Hot reload and hot restart
04:06
Introduction to widgets
02:22
The MaterialApp widget
01:51
The Scaffold widget
02:37
Updating the counter with setState
02:10
Wrap up
01:10
Useful Links & Resources
00:02
Shortcuts for VS Code and Android Studio
00:11
+ Building Layouts
39 lectures 02:09:02
Switching between apps
00:54
Writing the root widget of the app
04:07
Adding the MaterialApp
02:50
Adding some folders to our project
02:19
Adding a sign-in page
03:35
The ThemeData class
02:12
The AppBar widget
02:38
Preview of the SignInPage layout
01:27
Adding a Column layout
03:17
Code formatting with dartfmt
04:53
Adding some boxes and extracting code into a method
03:39
Private methods
03:25
Adding some padding
04:33
Text, TextStyle and FontWeight
03:12
Introduction to buttons
01:49
Adding the first button
03:29
Customising button colors
03:09
MaterialColor explained
03:08
Changing button shapes
02:16
Making code reusable
01:24
Creating a reusable custom RaisedButton
06:39
Creating a reusable SignInButton
04:13
Setting default values
02:22
Making the button height configurable
03:55
Adding the remaining buttons
04:36
Adding logos: introduction
01:17
Updating the pubspec.yaml file
04:02
Image variants
01:53
Adding an image inside a button
03:33
Arranging widgets horizontally in a Row
04:27
The Opacity widget
02:39
Creating a custom SocialSignInButton
05:58
The @required annotation
05:03
Using assertions for better widget API design
09:02
Useful Links & Resources
00:02
+ Firebase Authentication
16 lectures 55:05
Local and remote authentication
03:56
Introduction to Firebase
01:33
Creating a Firebase project
02:03
Configuring Firebase for Android
07:57
Configuring Firebase for iOS
07:22
Installing the firebase_auth package
03:01
Running on iOS & using the Xcode legacy build system
04:12
Running on Android
00:47
Migrating to AndroidX
05:22
Signing in anonymously with Firebase
04:05
Futures, async and await
06:46
The FirebaseAuth singleton, and private constructors
03:11
Explaining the short-hand syntax for callbacks
01:25
Error handling with try/catch
02:43
Useful Links & Resources
00:26
Recommendations about choosing and updating packages
00:15
+ Full Authentication Flow, State Management & Dependency Injection
18 lectures 01:00:24
Preview of the sign-in and sign-out flow
03:11
Creating a landing page widget
02:24
Adding a FirebaseUser to the LandingPage
02:04
Adding a callback to the SignInPage
02:49
Hooking up the onSignIn callback
02:23
Updating the SignInPage with setState
01:20
Creating the home page
04:02
Adding the sign-out functionality
03:03
Hooking up the onSignOut callback
02:34
Retrieving the current user when the app starts
03:07
Fixing the code in initState
03:46
Explaining global access and scoped access
05:42
Creating the Auth class
03:16
Creating the User class
03:34
The abstract AuthBase class
03:02
Using the Auth class
07:04
Lifting state up and its drawbacks
04:33
State Management & App Architecture
02:30
+ Streams and StreamBuilder
14 lectures 40:03
Handling errors and closing streams
04:51
The onAuthStateChanged stream
01:43
Type safety with Streams
02:35
Stream.map explained
02:36
Listening to the onAuthStateChanged stream
03:15
Introduction to StreamBuilder
03:13
Adding a CircularProgressIndicator
02:17
More on StreamBuilder
03:48
Refactoring the sign-in flows
03:48
Fixing the StreamBuilder code
02:15
Summary on Streams and StreamBuilder
02:57
Useful Links & Resources
00:01
+ Google and Facebook Sign-In
19 lectures 57:40
Overview of the Firebase sign-in methods
01:59
Enabling support for Google Sign In
02:30
Adding Google Sign-In to the Auth class
06:49
Hooking up Google Sign-In to our button
01:49
Configuring Google Sign-In on iOS
03:56
Google Sign-In flow explained
03:16
Supporting Google Sign Out
02:12
Testing Google Sign-In on Android
02:56
Checklist: Google Sign-In Flutter setup on Android
01:37
Viewing registered users on the Firebase console
00:46
UPDATE: Consider dropping Facebook sign-in support in your apps
00:22
Registering a Facebook App
07:32
Enabling Facebook Sign-In on Firebase
02:28
Adding the Facebook Sign-In code
06:01
Testing Facebook Sign-In on Android
03:37
Facebook iOS setup in Xcode
04:39
Testing Facebook Sign-In on iOS
02:10
Accessing the user's data and privacy considerations
02:55
Useful Links & Resources
00:05
Requirements
  • Experience with another programming language is beneficial, but not strictly required
  • NO prior Dart, Flutter and Firebase experience required
  • NO prior mobile app development experience required
Description

Want to learn how to build native mobile apps with Flutter?

Then you are in the right place. 

Flutter is a mobile framework by Google for building beautiful and fast native apps. Flutter is very productive and offers a rich set of widgets that makes building apps a breeze. Once you experience hot-reload and everything else Flutter has to offer, you will never want to go back.

In this course you will build a complete, real-world application for iOS and Android, by using Dart, Flutter and Firebase.

This course starts from the basics, and includes a full introduction to Dart and Flutter. This means that NO prior experience with Dart and mobile app development is needed.

As you make progress, the course will introduce more advanced topics, with special emphasis on writing production-ready code, so that you can learn how to build robust applications that scale.

And by learning Firebase as well, you will understand how to make modern reactive apps, and see why Flutter and Firebase are a great combination.

Important concepts are explained with clear diagrams. You will always learn what you will be building and why, and then how to do it.

This will give you a strong foundation, and the techniques you learn here will be valuable in your own Flutter apps.

So by the end of this course you will be a competent Flutter developer.

Course Structure

This is a complete course. With 22 hours of content, it will teach you everything you need to know about Flutter.

- Each lesson builds on top of the previous one (source code included).

- Each section covers a different topic.

You can follow the course from beginning to end, or choose the topics you’re most interested in.

Fast-track your learning

This course offers a lot of practical advice, along with tips and techniques that I have battle-tested over years of experience.

It goes far beyond "making things work", and gives you a very solid understanding of many different techniques and their trade-offs.

And it will show you how to think about problems and their solutions, with the mindset of a top professional software engineer.

So taking this course will save you a lot of time and money, and will prepare you for building real-world apps.

And if you get stuck, you can ask questions and they will be quickly answered.

Included in this course

  • Introduction to Dart

  • Setup instructions for macOS and Windows

  • Introduction to Flutter and widgets

  • Building layouts with Material & Cupertino widgets + build your own custom widgets

  • Navigation

  • Firebase Authentication (anonymous, email & password, Google, Facebook)

  • State Management: how to use setState, lifting state up via callbacks, global access, scoped access with Provider, BLoCs, ValueNotifier & ChangeNotifier

  • Streams, building reactive apps & advanced stream operations with RxDart

  • Forms, input handling and validation

  • Managing and updating packages

  • Databases and Cloud Firestore

  • Working with Forms and Cloud Firestore

  • Working with ListViews and multiple UI states

  • Date & time pickers

  • Unit & Widget tests with mockito (basics to advanced)

System requirements

  • Windows, macOS or Linux for Android app development

  • macOS for iOS app development

Who this course is for:
  • Beginner or intermediate Dart and Flutter developers
  • Experienced iOS and Android developers
  • Developers who want to write apps on iOS and Android with a single codebase
  • Developers that want to write modern, reactive apps with Firebase