Flutter & Dart - The Complete Guide [spring2020 Edition]

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

Beginner 0(0 Ratings)
Created by Muhammad Ali Awan Last updated Thu, 04-Jun-2020
What will i 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

Curriculum for this course
418 Lessons
Introduction
18 Lessons
  • Adding a "Mark as Favorite" Feature
  • Module Introduction
  • Introduction
  • 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
  • Flutter & Material Design
  • Flutter Alternatives
  • "Edit Product" Screen & A Problem
  • Course Outline
  • How To Get The Most Out Of The Course
  • Useful Resources & Links
  • Using Keys
  • You did it!
  • Your Next Steps (To Become an Awesome Developer!)
  • How to Plan & Develop Successful Apps
  • 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
  • Wrap Up
  • Useful Resources & Links
  • Module Introduction
  • Using a Proper Project Setup
  • Sending a Method Call from Flutter
  • Running Android Code
  • Running iOS Code
  • Module Introduction
  • What is Firebase?
  • Creating a New App
  • Getting Started with Firebase
  • Getting Started with Flutter & the Firebase SDK
  • Adding "GoogleServices-Info.plist" correctly to iOS
  • Rendering Stream Data with StreamBuilder
  • Adding Data
  • A Basic Authentication Screen
  • Adding an App Theme
  • Creating an Authentication Form
  • Connecting Auth Form & Auth Screen
  • Implementing Authentication
  • Storing Extra User Data
  • Finishing Authentication & Logout
  • Adding Firebase Security Rules
  • Listening to Chat Messages
  • Sending & Ordering Chat Messages
  • Creating a Basic Chat Bubble Widget
  • Improving the Chat Bubbles
  • Testing on Multiple Devices
  • Displaying User Names
  • ImagePicker: Latest Version
  • Adding an Image Picker
  • Preparing File Upload & Validating Images
  • Uploading Images
  • Improving Image Upload
  • Running on a Real iOS Device
  • Displaying User Images
  • How Push Notifications Work
  • An Introduction to Firebase Cloud Messaging
  • Android & Push Notifications
  • iOS & Push Notifications
  • Handling Push Notifications
  • Getting Started with Firebase Cloud Functions
  • Setting a Firestore Trigger
  • Sending Automated Push Notifications
  • Polishing & Wrap Up
  • Module Resources
  • 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
  • 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
  • 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
  • Adding a "Hero" Transition
  • Adding a "Hero" Transition
  • Working with Slivers
  • Practice: Animating Order Boxes
  • A Fix for the Latest Version of Flutter
  • Implementing Custom Route Transitions
  • Wrap Up
  • Useful Resources & Links
  • 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)
  • 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
  • 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
  • Module Introduction
  • Snackbars & Undoing "Add to Cart" Actions
  • Showing Alert Dialogs
  • Adding a "Manage Products" Page
  • 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
  • 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
  • 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
  • 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
  • Wrap Up
  • Useful Resources & Links
  • 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
  • Time to Practice: 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
  • Keys, Lists, Stateful Widgets
  • Wrap Up
  • Useful Resources & Links
  • 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
  • Responsiveness
  • Controlling the Device Orientation
  • Rendering Alternative Landscape Content - 1
  • 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
  • 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
  • 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
  • Theming
  • Adding Images to the App
  • Planning the Chart Widget
  • Looping Through Lists
  • More on "for" Loops
  • 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
  • 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
  • Time to Practice: Flutter Basics
  • Wrap Up
  • Module Resources
  • Bonus: More Content!
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
+ View more
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
About the instructor
  • 0 Reviews
  • 2 Courses
+ View more
Student feedback
0
Average rating
  • 0%
  • 0%
  • 0%
  • 0%
  • 0%
Reviews