Dart and Flutter The Complete Developers Guide

Everything you need to know for building mobile apps with Flutter and Dart, including RxDart and Animations!
Dart and Flutter The Complete Developers Guide
File Size :
20.42 GB
Total length :
31h 14m



Stephen Grider


Last update




Dart and Flutter The Complete Developers Guide

What you’ll learn

Build beautiful multi-screen apps with Flutter
Understand the different approaches for loading and maintaining data in Flutter apps
Create and publish open source projects using Dart
Learn how to build offline-enabled apps with incredibly efficient data loading
Comprehend the best method for reading the incredible amount of Flutter documentation
Store long-term data on a user’s physical device using SQLite
Master streams and understand reactive programming to create Flutter apps

Dart and Flutter The Complete Developers Guide


Previous programming experience with Javascript, Java, Python, or similar is required .


If you’re tired of spinning your wheels learning Swift or Android, this is the course for you.
Animations? You will learn it.  Architectural Patterns? Included.  Navigation? Of course!
Flutter is a newcomer to the mobile development scene.  Strongly supported by Google, it is already viewed as an ideal platform for replacing native Swift and Android development.  Thanks to its amazing standard library of widgets, fast compile times, and amazing documentation, developers are falling in love with Flutter!  This course supports MacOS and Windows – develop Android and iOS apps easily!Flutter apps are created using the language Dart.  No problem if you’re not already familiar with Dart; this course includes a lightning fast introduction to Dart at the beginning, along with hours of bonus lectures at the end of the course solely focused on Dart and its advanced features.  If you come from a background working with Java, Ruby, or Javascript, you’ll feel right at home with Dart – the syntax is nearly identical, only a few core concepts need to be learned.  Dart is a strongly typed language – but don’t be discouraged if you’re not a fan of strong types!  I spend special time in this course to make it extra clear why developing with a strongly typed language is a breeze!One of the greatest challenges around developing Flutter applications right now is understanding how to design and architect apps.  Flutter is still in rapid development, and the community at large is still trying to find out the best techniques.  With this in mind, special attention is paid in the course to making sure you understand the primary design patterns advocated by Google’s Flutter team, including both the ‘Stateful Widget’ pattern and the ‘BLOC’ pattern.  The ‘BLOC’ pattern makes heavy use of Reactive Programming techniques, which you’ll learn about in this course as well.  These techniques can be easily applied to other languages and frameworks as well – talk about a bonus!Of course, no mobile app is complete without some nice looking animations.  You’ll learn how to build animations using Flutter’s standard library of tools, which can be easily used to make interactions that your users will love.  You should plan to complete the course with knowledge of how to reference Flutter’s standard library of widgets to assemble complex animations.Sign up today and you will:Understand the Dart language and its primary featuresStore information for long periods of time on the user’s device with offline storageLearn how to optimize network requests for improved performance on mobile networksDelight your users with complex animationsExpose the functionality of your apps with multi-screen navigationSteer through the incredible amount of Flutter documentationMaster Reactive Programming with streams by using RxDartImplement advanced design patterns advocated by Google’s official Flutter teamHandle user input with form validationLearn to build open source Dart packages and distribute them to other developersI’ve built the course that I would have wanted to take when I was learning Flutter. A course that explains the concepts and how they’re implemented in the best order for you to learn and deeply understand them.


Section 1: Let’s Dive In!

Lecture 1 How to Get Help

Lecture 2 Course Resources

Lecture 3 Join Our Community!

Lecture 4 Course Organization

Section 2: A Dart Introduction

Lecture 5 Dart Overview

Lecture 6 The Dartpad Editor

Lecture 7 Our First Program

Lecture 8 Pulling the Pieces Apart

Lecture 9 Functions in Dart

Lecture 10 Introduction to Types

Lecture 11 Why Use Types?

Lecture 12 String Interpolation

Lecture 13 Object Oriented Programming in Dart

Lecture 14 Creating Classes

Lecture 15 Creating Class Instances

Lecture 16 Constructor Functions

Lecture 17 Review on Constructors

Section 3: Staying on Target with Dart

Lecture 18 App Overview

Lecture 19 OOP Design Flow

Lecture 20 Adding Fields to Classes

Lecture 21 Associated Methods

Lecture 22 More Initialization with Constructors

Lecture 23 For Loops

Lecture 24 Adding Elements to Lists

Lecture 25 More on Variable Initialization

Lecture 26 Customizing Print Statements

Lecture 27 ToString on Cards

Lecture 28 Shuffling a List

Lecture 29 Annotating Argument Types

Lecture 30 Filtering Lists

Lecture 31 Annotating Argument Types

Lecture 32 Filtering Lists

Lecture 33 Shorthand Function Syntax

Lecture 34 Removing Individual Records

Lecture 35 RemoveCard Implementation

Lecture 36 Named Parameters

Section 4: Flutter Environment Setup – MacOS

Lecture 37 Flutter Setup on MacOS

Lecture 38 SDK Extraction

Lecture 39 Editing the PATH Variable

Lecture 40 XCode License

Lecture 41 Generating Flutter Projects

Section 5: MacOS Setup – Android

Lecture 42 Android Setup on MacOS

Lecture 43 Android Dependencies

Lecture 44 Android Project Setup

Lecture 45 More Android Dependencies!

Lecture 46 Android Emulator Creation

Lecture 47 Flutter Startup

Lecture 48 Finished Android Setup

Section 6: MacOS Setup – iOS

Lecture 49 iOS on Mac Setup

Lecture 50 XCode Setup

Lecture 51 iOS Simulator Startup

Lecture 52 App Startup

Section 7: Flutter Setup on PC

Lecture 53 Flutter Install

Lecture 54 More Flutter Installation

Lecture 55 Android Install

Lecture 56 Additional Dependencies

Lecture 57 Generating a Project

Lecture 58 Selecting an Image

Lecture 59 Starting the Emulator

Lecture 60 Finishing Android Setup

Section 8: App Building Time!

Lecture 61 Code Editor Setup

Lecture 62 What’s Flutter About, Anyways?

Lecture 63 App Overview

Lecture 64 The Four Step Design Process

Lecture 65 Import Statements

Lecture 66 Creating Widgets

Lecture 67 Displaying Content on Screen

Lecture 68 Showing a Scaffold

Lecture 69 Customizing the App Bar

Lecture 70 Named Parameter Clarification

Lecture 71 Required Parameters

Lecture 72 Child Parameters

Lecture 73 Displaying Icons

Lecture 74 Adding Custom Widgets

Section 9: State Design with Flutter Apps

Lecture 75 Stateless vs Stateful Widgets

Lecture 76 The Build Method

Lecture 77 Local Import Statements

Lecture 78 Quick Breather and Review

Lecture 79 Refactoring Stateless to Stateful

Lecture 80 More Refactoring to Stateful Widgets

Section 10: High-Level Dart

Lecture 81 Generics in Dart

Lecture 82 Why Two Classes?

Section 11: HTTP Requests with Flutter

Lecture 83 Photos API

Lecture 84 Working with JSON

Lecture 85 Casting JSON to Model Instances

Lecture 86 Named Constructors

Lecture 87 Adding an Image Model

Lecture 88 Function References

Lecture 89 The HTTP Package

Lecture 90 Issuing HTTP Requests

Lecture 91 Handling Dart Futures

Lecture 92 Parsing Future Responses into a Model

Lecture 93 Updating the AppState Widget

Lecture 94 Building Lists of Widgets

Lecture 95 Sending Images to the ImageList

Lecture 96 The Final Keyword

Lecture 97 Building Lists with ListView

Lecture 98 Listing URL’s

Lecture 99 Text to Images

Lecture 100 Containers for Positioning

Lecture 101 Adding Border Style

Lecture 102 Column Widgets for Layout

Lecture 103 Selective Padding

Lecture 104 App Review

Section 12: Forms and Validation with Flutter

Lecture 105 App Overview

Lecture 106 Boilerplate App Code

Lecture 107 Creating the Login Screen

Lecture 108 More Container Styling

Lecture 109 Labels and Hint Text

Lecture 110 Customizing Keyboard Type

Lecture 111 Handling Password Inputs

Lecture 112 Displaying Buttons with RaisedButton

Lecture 113 Changing Widget Colors

Lecture 114 Layout Control

Lecture 115 Form Validation

Lecture 116 Referencing Widgets with Global Keys

Lecture 117 The Form Widget and FormState

Lecture 118 Creating a Global Key

Lecture 119 Referencing FormState with Global Keys

Lecture 120 Validating via FormState

Lecture 121 Triggering Validation

Lecture 122 Retrieving Form Values

Lecture 123 Final Form Submittal

Lecture 124 Code Reuse with Mixins

Lecture 125 Mixin Validator Implementation

Section 13: Reactive Programming with Dart

Lecture 126 A Quick Detour

Lecture 127 Streams by Analogy

Lecture 128 Characteristics of Streams

Lecture 129 StreamControllers and Sinks

Lecture 130 Mapping a Stream

Lecture 131 Adding a StreamTransformer

Lecture 132 Implementing the Listener

Lecture 133 Stream Review

Lecture 134 Let’s Build a Game

Lecture 135 Why Streams?

Lecture 136 Word Guessing

Lecture 137 Stream’s ‘Take’ and ‘Where’ Functions

Lecture 138 Validation with Streams

Lecture 139 Email Validation

Lecture 140 Wiring up the Error

Section 14: Advanced Flutter Architecture – The Bloc Pattern

Lecture 141 BLOC’s vs Stateful Widgets

Lecture 142 The Purpose of Streams with Blocs

Lecture 143 Generating a New Project

Lecture 144 App Boilerplate

Lecture 145 Second Time on LoginScreen

Lecture 146 TextFields with RaisedButtons

Lecture 147 How to Use TextFields

Lecture 148 BLOC Design for TextFields

Lecture 149 Annotating Stream Types

Lecture 150 Issues with Bloc Access

Lecture 151 Shortcut Access with Getters

Lecture 152 Public vs Private Fields

Lecture 153 Improving the BLOC Api

Lecture 154 Validation Transformers

Lecture 155 A Technicality Around Mixins

Lecture 156 Cleaning Up Controllers

Lecture 157 Bloc Application

Section 15: Consuming BLOC Data

Lecture 158 The StreamBuilder Widget

Lecture 159 Streambuilder for Password Fields

Lecture 160 Scoped Bloc Approach

Lecture 161 Provider Implementation

Lecture 162 The Provider’s ‘of’ Function

Lecture 163 The Provider’s Constructor

Lecture 164 The Provider in Action

Lecture 165 Accessing the Bloc

Lecture 166 Breather and Review

Lecture 167 Enabling Form Submission

Lecture 168 Stream Merging Possibilities

Section 16: RxDart for Reactive Programming

Lecture 169 Introducing RxDart

Lecture 170 More on RxDart

Lecture 171 The CombineLatest Function

Lecture 172 CombineLatest in Action

Lecture 173 More on StreamBuilder

Lecture 174 Interpreting Stream Values

Lecture 175 Broadcast Streams

Lecture 176 Disabled by Default

Lecture 177 Replacing Controllers with Subjects

Lecture 178 Review of BLOCs

Section 17: Building Delightful Animations

Lecture 179 App Overview

Lecture 180 Animation Library Classes

Lecture 181 App Boilerplate

Lecture 182 StatefulWidgets for Animations

Lecture 183 Widget Structure

Lecture 184 Displaying a Cat

Lecture 185 The InitState Method

Lecture 186 Declaring the TickerProvider

Lecture 187 Tweens with Curves

Lecture 188 Performance Savings with AnimatedBuilder

Lecture 189 Nature of Animation

Lecture 190 Starting the Animation

Lecture 191 Watching for Taps with GestureDetector

Lecture 192 Reversing Animation States

Lecture 193 Building the Box

Lecture 194 Layouts with the Stack Widget

Lecture 195 Order of Drawing Widgets

Lecture 196 Add Center Widget

Lecture 197 Positioned Widgets

Lecture 198 Expanding Stack Dimensions

Lecture 199 Three Reasons for Strange Layouts

Lecture 200 Positioned Constraints

Lecture 201 Negative Offsets

Lecture 202 Stack Clip Settings

Lecture 203 Adjusting Tween Ranges

Lecture 204 Adding Box Flaps

Lecture 205 Rotating Widgets

Lecture 206 Rotation by Radians

Lecture 207 Changing Rotation Point

Lecture 208 A Touch of Positioning

Lecture 209 BoxAnimation Controller

Lecture 210 Adding Animated Builders

Lecture 211 Resetting Animations

Lecture 212 Constraining Animation Range

Lecture 213 Adding the Right Flap

Lecture 214 Negative Rotation Values

Lecture 215 Toggling Animation State

Lecture 216 Animation Wrapup

Section 18: Performant Data Fetching

Lecture 217 App Overview

Lecture 218 Hacker News API

Lecture 219 More API Challenges

Lecture 220 API Performance Strategy

Lecture 221 Creating the ItemModel Class

Lecture 222 A Few More ItemModel Properties

Lecture 223 API Provider Implementation

Lecture 224 Fetching Individual Items

Section 19: Testing with Flutter and Dart

Lecture 225 Testing with Dart

Lecture 226 A Few Imports

Lecture 227 Writing Expectations

Lecture 228 Mocking HTTP Requests

Lecture 229 Returning JSON

Lecture 230 Testing FetchItem

Section 20: Offline Data Storage

Lecture 231 SQLite DB Provider

Lecture 232 Database Imports

Lecture 233 Async Constructors

Lecture 234 Creating a DB Connection

Lecture 235 Creating Tables with SQLite

Lecture 236 Adding Table Columns

Lecture 237 Issuing Queries

Lecture 238 Multiple Named Constructors

Lecture 239 Massaging DB Return Maps

Lecture 240 Turning Class Instances to Maps

Lecture 241 Implementing the Repository

Lecture 242 More on the Repository

Lecture 243 Type Annotations

Lecture 244 Casting Lists

Section 21: Type Design

Lecture 245 More on the Repository

Lecture 246 Abstract Classes

Lecture 247 The Need for Abstract Classes

Lecture 248 Why Abstract Classes?

Lecture 249 More on Abstract Classes

Lecture 250 Repository Interface Design

Lecture 251 Defining the Source

Lecture 252 Cache Definitions

Lecture 253 Lists of Sources and Caches

Lecture 254 Ultimate Reusability

Lecture 255 Quick Gotcha

Lecture 256 Another Quick Gotcha!

Lecture 257 FetchTopIds Implementation

Section 22: On Demand Widget Rendering

Lecture 258 App Setup

Lecture 259 A Touch of Boilerplate

Lecture 260 Data Fetching Concerns

Lecture 261 Solution Outline

Lecture 262 FutureBuilder in Action

Lecture 263 The Stories Provider

Lecture 264 Bloc Design

Lecture 265 Exposing Bloc Getters

Lecture 266 Wiring up the Stories Provider

Lecture 267 Bloc Testing

Lecture 268 Type Annotations Solve Problems

Lecture 269 Circular Progress Indicator

Lecture 270 Item Fetching Architecture

Lecture 271 Giant Gotcha with StreamBuilder

Lecture 272 Giant Gotcha Solution

Lecture 273 Implementing ScanStreamTransformer

Lecture 274 Finishing the ScanStreamTransformer

Lecture 275 Adding the Items Controller

Lecture 276 A Gotcha Around Streams? Impossible!

Lecture 277 Single Transformer Application

Lecture 278 The ListView Tile

Lecture 279 StreamBuilder Setup

Lecture 280 Wrapping Up the FutureBuilder

Lecture 281 Double Gotcha!

Lecture 282 Stream Subscriptions

Lecture 283 Stream Subscription Fix

Lecture 284 Additional Streams

Lecture 285 A Laborious Refactor

Lecture 286 Result of Refactor

Lecture 287 Quick Debug Session

Lecture 288 Resolving Database Conflicts

Lecture 289 Building Story Tiles

Lecture 290 Comments Icon

Lecture 291 Applying Dividers with Height

Lecture 292 Loading Container Stand-in

Lecture 293 Building the Loading Container

Lecture 294 Showing the Loading Container

Lecture 295 Long-Lived Cache Values

Lecture 296 Swipe to Refresh Indicator

Lecture 297 Implementing a Refresh Widget

Lecture 298 Clearing Database Tables

Lecture 299 Communicating a Future to onRefresh

Section 23: Navigation with Flutter

Lecture 300 Navigation in Flutter

Lecture 301 Map Based Routing

Lecture 302 OnGenerateRoute-Based Navigation

Lecture 303 OnGenerateRoute Implementation

Lecture 304 Navigating in Style!

Lecture 305 A PageRoute for NewsDetail

Lecture 306 A Scaffold in NewsDetail

Lecture 307 Parsing Route Settings

Lecture 308 The Comments Bloc Provider

Lecture 309 Comments Bloc Design

Lecture 310 More on Comments Bloc

Lecture 311 Recursive Data Fetching

Lecture 312 Quick Fix

Lecture 313 Connecting the Comments Provider

Lecture 314 Testing Recursive Fetching

Lecture 315 Consuming the Item Map

Lecture 316 Displaying the Story Title

Lecture 317 Text Styling

Lecture 318 Container Alignment

Lecture 319 Building the Comments List

Lecture 320 More Logic Extraction

Lecture 321 The Comment Widget

Lecture 322 Comment’s FutureBuilder

Lecture 323 Showing Individual COmments

Lecture 324 Recursive Rendering

Lecture 325 Styling the Comment List

Lecture 326 Defaulting Null Values

Lecture 327 Handling Deleted Comments

Lecture 328 Nested Comments

Lecture 329 ListTile’s ContentPadding Property

Lecture 330 Replacing Placeholder Characters

Lecture 331 Loading Containers for Comments

Lecture 332 App Wrapup

Lecture 333 Last Fix!

Section 24: Appendix One: Building Open Source with Dart

Lecture 334 Dart Local Installation

Lecture 335 Dart Install on Mac

Lecture 336 Editor Setup for Dart

Lecture 337 App Overview

Lecture 338 Folder and File Structure

Lecture 339 The PubSpec File

Lecture 340 Running Dart Files

Lecture 341 Program Design Methodology

Lecture 342 Class Creation

Lecture 343 Terminal Design

Lecture 344 Terminal Implementation

Lecture 345 Stdout and Stdin

Lecture 346 Import Statements

Lecture 347 Stdout Instance

Lecture 348 More on Import Statements

Lecture 349 Testing the Import Class

Lecture 350 Checking Operating System

Lecture 351 Clearing Windows Terminal

Lecture 352 Clearing Other Terminals

Lecture 353 Testing ClearScreen

Lecture 354 Collecting Input Over Stdin

Lecture 355 Option Class FIelds

Lecture 356 Adding Dynamic Fields

Lecture 357 Printing Individual Options

Lecture 358 Testing Option Printing

Lecture 359 List Shortcomings

Lecture 360 Maps in Dart

Lecture 361 Refactor to Maps

Lecture 362 The Prompter Class

Lecture 363 Testing the Prompter

Lecture 364 Extracting the Terminal

Lecture 365 Var vs Final for Variables

Lecture 366 Final’s Affect on Values

Lecture 367 Const’s Dual Nature

Lecture 368 Const’s Behavior by Type

Lecture 369 Marking Terminal as Const

Lecture 370 Private Variables

Lecture 371 Finishing Prompter

Lecture 372 Error Handling

Lecture 373 Asking Binary Questions

Lecture 374 Testing Binary Inputs

Lecture 375 Code Similarities

Lecture 376 Refactor for Code Reuse

Lecture 377 More on Private

Lecture 378 Central Lib File

Lecture 379 A Single Export Point

Lecture 380 A Relevant Example File

Lecture 381 Outstanding Project Config

Lecture 382 Uploading the Prompter Lib

Section 25: Appendix Two: Building a Dart CLI

Lecture 383 App Overview

Lecture 384 Project Setup

Lecture 385 Importing Library Code

Lecture 386 Forcibly Exiting a Program

Lecture 387 Prompting for File Type

Lecture 388 Implementation Flow

Lecture 389 Working with the Current Directory

Lecture 390 Filtering Non-Files

Lecture 391 Filtering Non-Images

Lecture 392 Building Options from Images

Lecture 393 Testing Image Selection

Lecture 394 Converting Images

Lecture 395 The ConvertImage Function

Lecture 396 Reading File Contents

Lecture 397 Encoding to JPG or PNG

Lecture 398 Writing Files to the Hard Drive

Lecture 399 Returning the Image Name

Lecture 400 Testing Image Conversion

Lecture 401 Opening the Image

Section 26: Extras

Lecture 402 Bonus!

Developers looking to build quality apps with Flutter

Course Information:

Udemy | English | 31h 14m | 20.42 GB
Created by: Stephen Grider

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

New Courses

Scroll to Top