Flutter & Dart – The Complete Guide [2020 Edition]

Flutter & Dart – The Complete Guide [2020 Edition]

English | MP4 | AVC 1280×720 | AAC 48KHz 2ch | 41 Hours | 18.9 GB

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

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!

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
Table of Contents

Introduction
1 Introduction
2 What is Flutter
3 Join our Online Learning Community
4 Understanding the Flutter Architecture
5 How Flutter Dart Code Gets Compiled To Native Apps
6 Understanding Flutter Versions
7 Flutter macOS Setup
8 macOS Development Environment
9 Android Licenses XMLSchema Error
10 Flutter Windows Setup
11 Windows Development Environment
12 Flutter Material Design
13 Flutter Alternatives
14 Course Outline
15 How To Get The Most Out Of The Course
16 Useful Resources Links

Flutter Basics [QUIZ APP]
17 Module Introduction
18 Creating a New Project
19 An Overview of the Generated Files Folders
20 More on Git (Version Control System)
21 Analyzing the Default App
22 Dart Basics
23 More Dart Basics
24 Dart Basics – Summary
25 Building an App From Scratch
26 Running the App on an Emulator
27 Class Constructors Named Arguments
28 First Summary Additional Syntax
29 Building a Widget Tree
30 Visible (Input Output) Invisible (Layout Control) Widgets
31 Adding Layout Widgets
32 Connecting Functions Buttons
33 Anonymous Functions
34 Updating Widget Data (Or Using StatelessWidget Incorrectly)
35 [DART DEEP DIVE] Understanding Lists
36 Updating Correctly with Stateful Widgets
37 A Brief Look Under The Hood
38 Using Private Properties
39 Creating a New Custom Widget
40 First Styling Layouting Steps
41 Enums Multiple Constructors
42 Official Docs The Widget Catalog
43 Passing Callback Functions Around
44 Introducing Maps
45 Mapping Lists to Widgets
46 final vs const
47 Introducing if Statements
48 [DART DEEP DIVE] More on if Statements
49 [DART DEEP DIVE] The null Value
50 Outputting Widgets Conditionally
51 Splitting the App Into Widgets
52 Calculating a Total Score
53 Getters else-if
54 Resetting the Quiz
55 Wrap Up
56 Module Resources

Running Apps on Different Devices Debugging Apps
57 Module Introduction
58 Running the App on a Real Android Device
59 Running the App on an iOS Emulator
60 Running the App on a Real iOS Device
61 Working with the Emulators Using the Emulators
62 Understanding Error Messages Fixing Errors
63 Using the Debugger
64 Getting Started with the Dart DevTools
65 Understanding the Repaint Rainbow
66 Wrapping up the Dart DevTools
67 Useful Resources Links

Widgets Styling Adding Logic – Building a Real App [PERSONAL EXPENSES APP]
68 Module Introduction
69 An Overview of the Core Flutter Widgets
70 Planning the App
71 Combining Widgets
72 Understanding Column Alignment
73 Not a Widget Adding a Transaction Model Transaction Data
74 Mapping Data Into Widgets
75 Building a Custom List Item
76 Styling a Container
77 Styling Text
78 More Styling
79 Containers vs Columns vs Rows
80 Using String Interpolation
81 Installing External Packages Formatting Dates
82 DateFormat Patterns
83 Adding Text Input Widgets (TextField)
84 Fetching User Input
85 Splitting the App Into Widgets
86 Connecting Widgets Managing Data State
87 Adding User Transactions to the List
88 Making the List Scrollable
89 Working with ListViews
90 Further Input Output Styling and Configuration
91 Adding AppBar Buttons Floating Action Buttons
92 Showing a Modal Bottom Sheet
93 Improving Styling the Modal Bottom Sheet
94 Configuring Using Themes
95 Custom Fonts Working with Text Themes
96 Adding Images to the App
97 Planning the Chart Widget
98 Looping Through Lists
99 More on for Loops
100 Deriving Recent Transactions
101 Creating Bars for our Chart
102 Populating the Chart with Values
103 Finishing the Chart Bars
104 Flexible Expanded Deep Dive
105 Adding a ListTile Widget
106 Improving the Overall Chart
107 Widgets Configuring Widgets – Summary Overview
108 Getting Started with Date Selection
109 Showing a DatePicker
110 Adding Transactions with a Date
111 Deleting Transactions Using IconButtons
112 Final Polishing
113 Wrap Up
114 Useful Resources Links

Responsive Adaptive User Interfaces and Apps
115 Module Introduction
116 What does Responsive and Adaptive Mean
117 Examples Where we could improve the App
118 Calculating Sizes Dynamically
119 Working with the textScaleFactor
120 Using the LayoutBuilder Widget
121 Controlling the Device Orientation
122 Rendering Alternative Landscape Content – 1
123 Finishing Landscape Mode
124 Showing Different Content Based on Device Orientation
125 Respecting the Softkeyboard Insets
126 Using the Device Size in Conditions
127 Managing the MediaQuery Object
128 Checking the Device Platform
129 Using Cupertino (iOS) Widgets
130 Using the SafeArea
131 More Cupertino Styles
132 Using Cupertino Buttons
133 Creating Custom Adaptive Widgets
134 Wrap Up
135 Useful Resources Links

Widget Flutter Internals – Deep Dive
136 Module Introduction
137 The Problem At Hand
138 Widget Tree Element Tree – What Why and How
139 How Flutter Rebuilds Repaints the Screen
140 How Flutter Executes build()
141 Using const Widgets Constructors
142 Writing Good Code
143 Extracting Widgets
144 Using Builder Methods
145 Understanding the Widget Lifecycle
146 Calling super.initState() etc
147 Understanding the App Lifecycle
148 Understanding Context
149 A Problem with Lists Stateful Widgets
150 Understanding the Problem Root
151 Using Keys
152 Wrap Up
153 Useful Resources Links

Navigation Multiple Screens [MEALS APP]
154 Module Introduction
155 Planning the App
156 Starting With The App – Adding Base Data
157 Creating a Grid Working with Linear Gradients
158 Registering a Screen as the Main Screen
159 Styling Theming
160 Navigating to a New Page
161 Passing Data via the Constructor
162 Using Named Routes Passing Data With Named Routes
163 Diving Deeper into Named Routes
164 Adding a Meal Model Data
165 Selecting Meals for a Chosen Category
166 Displaying Recipe Items Using Network Images
167 Finishing the Meal List Item
168 Navigating to the Meal Detail Page
169 onGenerateRoute onUnknownRoute
170 Finishing the Meal Detail Page
171 Adding a TabBar to the Appbar
172 Adding a Bottom TabBar
173 Adding a Custom Drawer
174 Adding Links to the Drawer
175 Replacing Pages (Instead of Pushing)
176 Popping Pages Passing Data Back
177 Adding Filter Switches
178 Adding Filtering Logic
179 Adding a Mark as Favorite Feature
180 A Problem
181 Wrap Up
182 Useful Resources Links

State Management [SHOP APP]
183 Module Introduction
184 Planning the App
185 Defining a Data Model
186 Working on the Products Grid Item Widgets
187 Styling Theming the App
188 Adding Navigation to the App
189 Why State Management And what is State and State Management
190 Understanding the Provider Package Approach
191 Working with Providers Listeners
192 [DART DEEP DIVE] Inheritance (extends) vs Mixins (with)
193 Providing non-Objects
194 Listening in Different Places Ways
195 Using Nested Models Providers
196 Exploring Alternative Provider Syntaxes
197 Using Consumer instead of Provider.of
198 Local State vs App-wide State
199 Adding Shopping Cart Data
200 Working with Multiple Providers
201 Connecting the Cart Provider
202 Working on the Shopping Cart Displaying a Total
203 Displaying a List of Cart Items
204 Making Cart Items Dismissible
205 Adding Product Detail Data
206 Providing an Orders Object
207 Adding Orders
208 Adding an Orders Screen
209 Using a Side Drawer
210 Making Orders Expandable Stateful Widgets vs Providers
211 Wrap Up
212 Useful Resources Links

Working with User Input Forms [SHOP APP]
213 Module Introduction
214 Snackbars Undoing Add to Cart Actions
215 Showing Alert Dialogs
216 Adding a Manage Products Page
217 Edit Product Screen A Problem
218 Using Forms Working with Form Inputs
219 ListView or Column
220 Managing Form Input Focus
221 Multiline Inputs Disposing Objects
222 Adding an Image Preview
223 Image Input Image Preview
224 Submitting Forms
225 Validating User Input
226 Adding Validation to All Inputs
227 [OPTIONAL] Working with Regular Expressions
228 Saving New Products
229 Time to Update Products
230 Allowing Users to Delete Products
231 Wrap Up
232 Useful Resources Links

Sending Http Requests [SHOP APP]
233 Module Introduction
234 On-Device vs Web Storage
235 How to Connect Flutter to a Database
236 Preparing Our Backend
237 How To Send Http Requests
238 Sending POST Requests
239 Working with Futures in Dart
240 [DART DEEP DIVE] Futures Async Code
241 Showing a Loading Indicator
242 Handling Errors Gracefully
243 Working with async await
244 Fetching Data initState of(context)
245 How to Transform Fetched Data
246 Implementing Pull-to-Refresh
247 Updating Data via PATCH Requests
248 Utilizing Optimistic Updating
249 Creating Custom Exceptions More Error Handling
250 A Challenge For You
251 Updating the Favorite Status Optimistically
252 Storing Orders in the Web
253 Fetching Orders Fixing an Issue
254 Using the FutureBuilder Widget Improving the Code
255 Wrap Up
256 Useful Resources Links

Adding User Authentication [SHOP APP]
257 Module Introduction
258 How Authentication Works
259 Prepare Backend
260 Adding the Auth Screen
261 Adding User Signup
262 Allowing Users to Log In
263 Handling Authentication Errors
264 Managing the Auth Token Locally (in the App)
265 Using the ProxyProvider and Attaching the Token to Outgoing Http Requests
266 Adding the Token to All Requests
267 Connecting the Favorite Status to Users
268 Attaching Products to Users Filtering By Creator
269 Attaching Orders to Users
270 Adding a Logout Functionality
271 Automatically Logging Users Out (After Some Time)
272 Automatically Logging Users In
273 Wrap Up
274 Useful Resources Links

Adding Animations [SHOP APP]
275 Module Introduction
276 Animations From Scratch (Completely Manually Controlled)
277 Using the AnimatedBuilder Widget
278 Working with the AnimatedContainer
279 More Built-in Animation Transition Widgets
280 Fading Loaded Images In (And Showing a Placeholder)
281 Adding a Hero Transition
282 Working with Slivers
283 Practice Animating Order Boxes
284 A Fix for the Latest Version of Flutter
285 Implementing Custom Route Transitions
286 Wrap Up
287 Useful Resources Links

Using Native Device Features (Camera Maps Location …) [GREAT PLACES APP]
288 Module Introduction
289 Planning the App
290 PlaceList Place Provider Setup
291 Adding the Add Place Screen An Image Input
292 Using Image Picker The Device Camera
293 Storing the Image on the Filesystem (on the Device)
294 Managing Data Images via the Provider Package
295 Handling Errors
296 Testing on Real Devices
297 Preparing SQLite
298 Storing Fetching Data with SQLite
299 Adding a Location Input The location Package
300 Fetching the User Coordinates
301 Displaying a Static Map Snapshot
302 Rendering a Dynamic Map (via Google Maps)
303 Allowing Users to Pick a Location on the Map
304 Storing the Location in SQLite
305 Adding a Place Detail Screen Opening the Map in readonly Mode
306 Wrap Up
307 Useful Resources Links

Firebase Image Upload Push Notifications – Building a Chat App
308 Module Introduction
309 What is Firebase
310 Creating a New App
311 Getting Started with Firebase
312 Important Flutter Firebase Versions
313 Getting Started with Flutter the Firebase SDK
314 Adding GoogleServices-Info.plist correctly to iOS
315 Rendering Stream Data with StreamBuilder
316 Adding Data
317 A Basic Authentication Screen
318 Adding an App Theme
319 Creating an Authentication Form
320 Connecting Auth Form Auth Screen
321 Adding the firebase auth Package
322 Implementing Authentication
323 Storing Extra User Data
324 Finishing Authentication Logout
325 Adding Firebase Security Rules
326 Listening to Chat Messages
327 Sending Ordering Chat Messages
328 Creating a Basic Chat Bubble Widget
329 Improving the Chat Bubbles
330 Testing on Multiple Devices
331 Displaying User Names
332 ImagePicker Latest Version
333 Adding an Image Picker
334 Preparing File Upload Validating Images
335 Uploading Images
336 Improving Image Upload
337 Running on a Real iOS Device
338 Displaying User Images
339 How Push Notifications Work
340 An Introduction to Firebase Cloud Messaging
341 Android Push Notifications
342 iOS Push Notifications
343 Handling Push Notifications
344 Getting Started with Firebase Cloud Functions
345 MUST READ Firebase Cloud Functions Billing
346 Setting a Firestore Trigger
347 Sending Automated Push Notifications
348 Polishing Wrap Up
349 Updating to the latest Firebase Package Versions
350 Module Resources

Running Native Swift ObjectiveC Java or Kotlin Code
351 Module Introduction
352 Using a Proper Project Setup
353 Sending a Method Call from Flutter
354 Running Android Code
355 Running iOS Code
356 Wrap Up
357 Useful Resources Links

Publishing to the App Stores
358 Module Introduction
359 Preparing the Code
360 Preparing the App Configuration
361 Preparing Third-Party Services
362 Adding Icons Splash Screens
363 Publishing Android Apps
364 Publishing iOS Apps
365 Useful Resources Links

Roundup Next Steps
366 You did it
367 Your Next Steps (To Become an Awesome Developer)
368 How to Plan Develop Successful Apps

Roundup
369 Bonus More Content