Flutter & Dart - The Complete Guide [2023 Edition]

68h 5m 58s
English
Paid

Course 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!

Read more about the course

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)

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!

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

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

Watch Online

This is a demo lesson (10:00 remaining)

You can watch up to 10 minutes for free. Subscribe to unlock all 588 lessons in this course and access 10,000+ hours of premium content across all courses.

View Pricing

Watch Online Flutter & Dart - The Complete Guide [2023 Edition]

0:00
/
#1: Welcome To This Course!

All Course Lessons (588)

#Lesson TitleDurationAccess
1
Welcome To This Course! Demo
01:17
2
What Is Flutter?
02:50
3
Flutter uses Dart!
01:52
4
One Codebase, Multiple Platforms
02:57
5
Flutter Setup - Overview
03:59
6
Windows Setup
13:27
7
macOS Setup
17:54
8
Project Creation & Setting Up a Code Editor for Flutter Development
05:11
9
Running a First Flutter App
09:07
10
Understanding Material Design
02:36
11
About This Course
04:44
12
Module Introduction
01:22
13
Analyzing A New Flutter Project
08:51
14
Form Dart To Machine Code
03:06
15
How Programming Languages Work
05:52
16
Starting From Scratch: Understanding Functions
06:06
17
Importing Features From Packages
05:03
18
How Flutter Apps Start
02:27
19
Understanding Widgets
02:53
20
Using a First Widget & Passing Values to Functions
04:38
21
Positional & Named Arguments
03:59
22
Combining Multiple Widgets
02:51
23
Understanding "const" Values
03:59
24
Building More Complex Widget Trees
07:26
25
Understanding Value Types
06:55
26
Configuring Widgets & Understanding Objects
07:25
27
Working with "Configuration Objects" (Non-Widget Objects)
05:15
28
Generics, Lists & Adding Gradient Colors
04:14
29
How To Configure Widgets & Objects
03:04
30
Practice: Styling Text
03:28
31
Onwards to Custom Widgets: Why Do You Need Them?
02:38
32
Understanding Classes
05:02
33
Building Custom Widgets
09:28
34
Working with Constructor Functions
05:57
35
Splitting Code Across Files
03:19
36
Practice: Create a Custom Widget
03:50
37
Introducing Variables
05:23
38
Variables & Types - Combining Two Key Concepts
02:24
39
"final" & "const" - Special Kinds Of "Variables"
04:54
40
Instance Variables (Properties) & Configurable Widgets
10:04
41
Practice: Reusable Widgets & Constructor Functions
06:41
42
Displaying Images & Using Multiple Constructor Functions
06:36
43
Adding Buttons & Using Functions As Values
06:09
44
Styling Buttons & Working with Padding
06:18
45
How NOT To Build Interactive Widgets
03:49
46
Introducing Stateful Widgets
15:07
47
Generating Random Numbers
07:55
48
Module Summary
10:22
49
Module Introduction
02:02
50
A Challenge For You!
08:52
51
Challenge Solution 1/2 - Creating a Widget
11:47
52
Challenge Solution 2/2 - Working with More Widgets
17:07
53
Adding Icons to Buttons
03:44
54
Adding Transparency to Widgets
04:23
55
Repetition & Exercise: Adding a Stateful Widget
10:51
56
Rendering Content Conditionally
07:03
57
Accepting & Passing Functions as Values
09:17
58
The "initState" Method
04:29
59
Using Ternary Expressions & Comparison Operators
07:06
60
Understanding "if" Statements
04:53
61
Adding a Data Model & Dummy Data
08:49
62
Configuring a Column
05:36
63
Creating a Reusable, Custom Styled Button
12:06
64
Accessing List Elements & Object Properties
05:54
65
Mapping Lists & Using the Spread Operator
07:46
66
Alignment, Margin & Padding
03:58
67
Mutating Values in Memory
05:47
68
Managing The Questions Index As State
05:50
69
More on Button Styling
07:51
70
Using Third-Party Packages & Adding Google Fonts
07:27
71
Passing Data via Functions Across Widgets
13:19
72
More Conditions
04:28
73
Getting Started with the Results Screen
08:03
74
Passing Data to the Results Screen
02:41
75
Introducing Maps & "for" Loops
12:01
76
Accessing Map Values & Using "Type Casting"
10:54
77
Combining Columns & Rows
06:08
78
Expanded To The Rescue!
03:08
79
Filtering & Analyzing Lists
07:44
80
Making Content Scrollable with SingleChildScrollView
04:08
81
Beyond the Basics: Optional, Important Dart Features
08:54
82
Module Summary
07:33
83
Module Introduction
00:57
84
The Starting Project & A Problem
01:09
85
Understanding Error Messages
07:37
86
Debugging Apps & Using "Debug Mode"
15:00
87
Working with the Flutter DevTools
07:42
88
Module Introduction
01:39
89
Starting Setup & Repetition Time!
07:08
90
Adding an Expense Data Model with a Unique ID & Exploring Initializer Lists
07:00
91
Introducing Enums
04:11
92
Creating Dummy Data
04:03
93
Efficiently Rendering Long Lists with ListView
10:22
94
Using Lists Inside Of Lists
02:28
95
Creating a Custom List Item with the Card & Spacer Widgets
16:48
96
Using Icons & Formatting Dates
07:26
97
Setting an AppBar with a Title & Actions
06:47
98
Adding a Modal Sheet & Understanding Context
07:25
99
Handling User (Text) Input with the TextField Widget
08:15
100
Getting User Input on Every Keystroke
04:54
101
Letting Flutter do the Work with TextEditingController
04:11
102
Time to Practice: Adding a New Input
01:12
103
Exercise Solution
03:51
104
Closing The Modal Manually
01:48
105
Showing a Date Picker
08:34
106
Working with "Futures" for Handling Data from the Future
07:42
107
Adding a Dropdown Button
10:58
108
Combining Conditions with AND and OR Operators
07:49
109
Validating User Input & Showing an Error Dialog
05:12
110
Saving New Expenses
06:00
111
Creating a Fullscreen Modal
02:03
112
Using the Dismissible Widget for Dismissing List Items
07:47
113
Showing & Managing "Snackbars"
09:14
114
Getting Started with Theming
07:44
115
Setting & Using a Color Scheme
06:40
116
Setting Text Themes
09:01
117
Using Theme Data in Widgets
09:03
118
Adding Dark Mode
07:14
119
Using Another Kind of Loop (for-in)
05:04
120
Adding Alternative Constructor Functions & Filtering Lists
04:40
121
Adding Chart Widgets
10:28
122
Module Summary
02:46
123
Module Introduction
00:58
124
What is "Responsiveness"?
02:07
125
Locking the Device Orientiation
04:54
126
Updating the UI based on the Available Space
07:56
127
Understanding Size Constraints
07:10
128
Handling to Screen Overlays like the Soft Keyboard
05:13
129
Understanding "Safe Areas"
02:54
130
Using the LayoutBuilder Widget
12:05
131
Building Adaptive Widgets
07:15
132
Module Summary
01:27
133
Module Introduction
01:10
134
Three Trees: Widget Tree, Element Tree & Render Tree
04:47
135
How The UI Is Updated
06:52
136
Refactor & Extract Widgets To Avoid Unnecessary Builds
06:35
137
Understanding Keys - Setup
04:35
138
Which Problem Do Keys Solve?
05:34
139
Understanding & Using Keys
04:13
140
Mutating Values in Memory & Making Sense of var, final & const
06:57
141
Module Summary
00:56
142
Module Introduction
02:06
143
Project Setup
01:36
144
Using a GridView
07:59
145
Widgets vs Screens
06:13
146
Displaying Category Items on a Screen
08:03
147
Making any Widget Tappable with InkWell
03:35
148
Adding Meals Data
05:21
149
Loading Meals Data Into a Screen
06:38
150
Adding Cross-Screen Navigation
08:42
151
Passing Data to the Target Screen
04:54
152
Introducing the Stack Widget
17:02
153
Improving the MealItem Widget
11:54
154
Adding Navigation to the MealDetails Screen
09:59
155
Improving the MealDetails Screen
08:16
156
Adding Tab-based Navigation
16:35
157
Passing Functions Through Multiple Layers of Widgets (for State Management)
11:56
158
Managing App-wide State & Data
05:29
159
Adding a Side Drawer
14:09
160
Closing the Drawer Manually
05:36
161
Adding a Filter Item
07:34
162
Replacing Screens (Instead of Pushing)
07:59
163
Adding More Filter Options
02:45
164
Returning Data When Leaving a Screen
06:19
165
Reading & Using Returned Data
04:32
166
Applying Filters
15:51
167
Module Summary
03:05
168
Module Introduction
01:30
169
What's The Problem?
02:09
170
Installing the Solution: Riverpod
01:21
171
How State Management with Riverpod Works
01:22
172
Creating a Provider
03:56
173
Using a Provider
07:18
174
Creating a More Complex Provider with StateNotifier
12:19
175
Using the FavoritesProvider
04:50
176
Triggering a Notifier Method
05:32
177
Getting Started with Another Provider
08:25
178
Combining Local & Provider-managed State
06:34
179
Outsourcing State Into The Provider
05:37
180
Connecting Multiple Providers With Each Other (Dependent Providers)
05:20
181
Swapping The "Favorite Button" Based On Provider State
02:42
182
Module Summary
03:12
183
Module Introduction
00:45
184
Setup & Understanding Explicit vs Implicit Animations
01:53
185
Explicit Animations: Adding an Animation Controller
09:36
186
Explicit Animations: Playing the Animation with AnimatedBuilder
08:40
187
Finetuning Explicit Animations
08:37
188
Getting Started with Implicit Animations
07:24
189
Configuring Implicit Animations
05:50
190
Adding Multi-Screen Transitions
03:55
191
Module Summary
02:29
192
Module Introduction
01:19
193
Setup & A Challenge For You
03:00
194
Challenge Solution 1 - Building & Using Models
08:07
195
Challenge Solution 2 - Building the List UI
09:28
196
Adding a "New Item" Screen
07:46
197
The Form & TextFormField Widgets
06:24
198
A Form-aware Dropdown Button
09:17
199
Adding Buttons to a Form
02:23
200
Adding Validation Logic
08:12
201
Getting Form Access via a Global Key
07:20
202
Extracting Entered Values
09:20
203
Passing Data Between Screens
07:17
204
Final Challenge Solution
04:19
205
Module Summary
01:13
206
Module Introduction
00:39
207
What's a Backend? And Why Would You Want One?
03:33
208
What Is HTTP & How Does It Work?
04:11
209
Setting Up a Dummy Backend (Firebase)
03:26
210
Adding the http Package
03:19
211
Sending a POST Request to the Backend
09:58
212
Working with the Request & Waiting for the Response
08:57
213
Fetching & Transforming Data
14:58
214
Avoiding Unnecessary Requests
04:47
215
Managing the Loading State
07:08
216
Error Response Handling
05:15
217
Sending DELETE Requests
06:45
218
Handling the "No Data" Case
03:44
219
Better Error Handling
05:53
220
Module Summary
02:21
221
Using the FutureBuilder Widget
18:08
222
Module Introduction
01:53
223
Setup & A Challenge For You!
03:45
224
Adding a Place Model (Challenge Solution 1/6)
02:27
225
Adding a "Places" Screen (Challenge Solution 2/6)
10:01
226
Adding an "Add Place" Screen (Challenge Solution 3/6)
09:39
227
Adding "riverpod" & A Provider (Challenge Solution 4/6)
07:00
228
Adding Places with Provider & Displaying Places (Challenge Solution 5/6)
07:35
229
Adding a "Place Details" Screen (Challenge Solution 6/6)
04:56
230
Adding a "Pick an Image" Input
07:55
231
Installing the "Image Picker" Package
05:06
232
Using the Device Camera For Taking Pictures
10:40
233
Adding the Picked Image to the Model & "Add Place" Form
06:11
234
Previewing the Picked Image
04:55
235
Adding the "location" Package & Starting with the "Get Location" Input Widget
08:51
236
Getting the User's Current Location
06:14
237
Using the Google Maps API - Setup
03:35
238
Using Google's Geocoding API
06:24
239
Storing the Location Data in the Model
03:36
240
Displaying a Location Preview Map Snapshot via Google
07:18
241
Using the Picked Location in the Form
03:22
242
Outputting the Location Data
07:47
243
Installing & Configuring the Google Maps Package
03:44
244
Adding a "Map" Screen
09:38
245
Displaying the Picked Place on a Dynamic Map
02:56
246
Handling Map Taps for Selecting a Location Manually
04:38
247
Using the Map Screen in the "Add Place" Form
08:25
248
Installing Packages for Local (On-Device) Data Storage
04:01
249
Storing the Picked Image Locally
05:00
250
Storing Place Data in a (On-Device) SQL Database
08:51
251
Loading Data from the SQL Database
08:10
252
Using a FutureBuilder for Loading Data
06:02
253
Module Summary
02:16
254
Course Roundup
00:58
255
About the Course Update & How To Proceed
06:12
256
Introduction
01:49
257
What is Flutter?
05:55
258
Understanding the Flutter Architecture
04:48
259
How Flutter & Dart Code Gets Compiled To Native Apps
03:13
260
Understanding Flutter Versions
02:50
261
Flutter macOS Setup
25:08
262
macOS Development Environment
19:15
263
Flutter Windows Setup
21:52
264
Windows Development Environment
17:58
265
Flutter & Material Design
01:16
266
Flutter Alternatives
06:07
267
Course Outline
06:41
268
How To Get The Most Out Of The Course
02:41
269
Module Introduction
02:26
270
Creating a New Project
06:32
271
An Overview of the Generated Files & Folders
08:11
272
Analyzing the Default App
05:33
273
Dart Basics
17:18
274
More Dart Basics
13:07
275
Building an App From Scratch
11:04
276
Running the App on an Emulator
03:26
277
Class Constructors & Named Arguments
08:38
278
First Summary & Additional Syntax
08:12
279
Building a Widget Tree
07:41
280
Visible (Input / Output) & Invisible (Layout / Control) Widgets
03:14
281
Adding Layout Widgets
08:48
282
Connecting Functions & Buttons
07:31
283
Anonymous Functions
03:21
284
Updating Widget Data (Or: Using StatelessWidget Incorrectly)
06:38
285
Updating Correctly with Stateful Widgets
11:59
286
A Brief Look Under The Hood
02:28
287
Using Private Properties
05:18
288
Creating a New, Custom Widget
11:51
289
First Styling & Layouting Steps
08:02
290
Enums & Multiple Constructors
04:08
291
Official Docs & The Widget Catalog
02:40
292
Passing Callback Functions Around
12:45
293
Introducing Maps
05:54
294
Mapping Lists to Widgets
10:25
295
final vs const
10:51
296
Introducing "if" Statements
06:52
297
[DART DEEP DIVE] More on "if" Statements
11:16
298
[DART DEEP DIVE] The "null" Value & Null Safety
12:31
299
Outputting Widgets Conditionally
02:22
300
Splitting the App Into Widgets
10:38
301
Calculating a Total Score
09:04
302
Getters & "else-if"
06:35
303
Resetting the Quiz
05:18
304
"Old" Button Widgets vs "New" Button Widgets
14:12
305
Wrap Up
01:54
306
Module Introduction
02:01
307
Running the App on a Real Android Device
03:57
308
Running the App on an iOS Emulator
05:55
309
Running the App on a Real iOS Device
01:53
310
Working with the Emulators / Using the Emulators
02:26
311
Understanding Error Messages & Fixing Errors
05:28
312
Using the Debugger
06:22
313
Getting Started with the Dart DevTools
04:55
314
Understanding the Repaint Rainbow
03:24
315
Wrapping up the Dart DevTools
01:35
316
Module Introduction
03:20
317
An Overview of the Core Flutter Widgets
09:43
318
Planning the App
02:44
319
Combining Widgets
09:19
320
Understanding Column Alignment
06:12
321
Not a Widget: Adding a Transaction Model & Transaction Data
08:29
322
Mapping Data Into Widgets
03:40
323
Building a Custom List Item
05:27
324
Styling a Container
05:13
325
Styling Text
02:47
326
More Styling!
01:56
327
Containers vs Columns vs Rows
03:39
328
Using String Interpolation
05:22
329
Installing External Packages & Formatting Dates
07:30
330
Adding Text Input Widgets (TextField)
09:42
331
Fetching User Input
09:30
332
Splitting the App Into Widgets
12:46
333
Connecting Widgets & Managing Data / State
06:34
334
Adding User Transactions to the List
03:59
335
Making the List Scrollable!
06:12
336
Working with ListViews
12:03
337
Further Input & Output Styling and Configuration
08:29
338
Adding AppBar Buttons & Floating Action Buttons
04:33
339
Showing a Modal Bottom Sheet
09:34
340
Improving & Styling the Modal Bottom Sheet
06:31
341
Configuring & Using Themes
08:43
342
Custom Fonts & Working with Text Themes
11:08
343
Adding Images to the App
07:58
344
Planning the Chart Widget
04:24
345
Looping Through Lists
13:48
346
Deriving Recent Transactions
07:25
347
Creating Bars for our Chart
11:00
348
Populating the Chart with Values
07:26
349
Finishing the Chart Bars
05:27
350
Flexible & Expanded: Deep Dive
10:24
351
Adding a ListTile Widget
05:30
352
Improving the Overall Chart
03:09
353
Widgets & Configuring Widgets - Summary / Overview
05:08
354
Getting Started with Date Selection
05:20
355
Showing a DatePicker
11:14
356
Adding Transactions with a Date
03:08
357
Deleting Transactions & Using IconButtons
07:03
358
Final Polishing!
05:35
359
Wrap Up
03:55
360
Module Introduction
01:38
361
What does "Responsive" and "Adaptive" Mean?
05:56
362
Examples: Where we could improve the App!
03:05
363
Calculating Sizes Dynamically
09:14
364
Using the LayoutBuilder Widget
07:45
365
Controlling the Device Orientation
04:20
366
Rendering Alternative Landscape Content - 1
04:43
367
Finishing Landscape Mode
02:59
368
Showing Different Content Based on Device Orientation
05:34
369
Respecting the Softkeyboard Insets
03:44
370
Using the Device Size in Conditions
04:11
371
Managing the MediaQuery Object
02:07
372
Checking the Device Platform
05:37
373
Using Cupertino (iOS) Widgets
09:06
374
Using the SafeArea
01:44
375
More Cupertino Styles
03:10
376
Using Cupertino Buttons
03:12
377
Creating Custom Adaptive Widgets
05:05
378
Wrap Up
01:44
379
Module Introduction
02:33
380
The Problem At Hand
03:14
381
Widget Tree & Element Tree - What, Why and How?
10:46
382
How Flutter Rebuilds & Repaints the Screen
08:49
383
How Flutter Executes build()
09:19
384
Using "const" Widgets & Constructors
11:17
385
Writing Good Code
03:58
386
Extracting Widgets
06:08
387
Using Builder Methods
10:23
388
Understanding the Widget Lifecycle
12:56
389
Understanding the App Lifecycle
09:27
390
Understanding Context
06:47
391
A Problem with Lists & Stateful Widgets
05:35
392
Understanding the Problem Root
05:10
393
Using Keys
11:16
394
Wrap Up
01:42
395
Module Introduction
02:24
396
Planning the App
04:46
397
Starting With The App - Adding Base Data
11:19
398
Creating a Grid & Working with Linear Gradients
07:50
399
Registering a Screen as the Main Screen
03:12
400
Styling & Theming
07:05
401
Navigating to a New Page
10:11
402
Passing Data via the Constructor
02:40
403
Using Named Routes & Passing Data With Named Routes
06:43
404
Diving Deeper into Named Routes
02:47
405
Adding a Meal Model & Data
12:45
406
Selecting Meals for a Chosen Category
04:57
407
Displaying Recipe Items & Using Network Images
15:00
408
Finishing the Meal List Item
15:22
409
Navigating to the Meal Detail Page
07:18
410
onGenerateRoute & onUnknownRoute
05:28
411
Finishing the Meal Detail Page
17:35
412
Adding a TabBar to the Appbar
10:27
413
Adding a Bottom TabBar
13:13
414
Adding a Custom Drawer
12:38
415
Adding Links to the Drawer
04:04
416
Replacing Pages (Instead of Pushing)
04:22
417
Popping Pages & Passing Data Back
17:07
418
Adding Filter Switches
08:32
419
Adding Filtering Logic
16:20
420
Adding a "Mark as Favorite" Feature
19:59
421
A Problem!
02:41
422
Wrap Up
02:56
423
Module Introduction
02:14
424
Planning the App
06:56
425
Defining a Data Model
06:33
426
Working on the "Products" Grid & Item Widgets
16:25
427
Styling & Theming the App
05:15
428
Adding Navigation to the App
10:31
429
Why State Management? And what is "State" and "State Management"?
06:30
430
Understanding the "Provider" Package & Approach
02:56
431
Working with Providers & Listeners
21:10
432
[DART DEEP DIVE] Inheritance ("extends") vs Mixins ("with")
06:24
433
Listening in Different Places & Ways
05:59
434
Using Nested Models & Providers
14:04
435
Exploring Alternative Provider Syntaxes
06:56
436
Using "Consumer" instead of "Provider.of"
07:26
437
Local State vs App-wide State
15:41
438
Adding Shopping Cart Data
08:40
439
Working with Multiple Providers
03:42
440
Connecting the Cart Provider
11:32
441
Working on the Shopping Cart & Displaying a Total
11:38
442
Displaying a List of Cart Items
11:18
443
Making Cart Items Dismissible
08:48
444
Adding Product Detail Data
04:50
445
Providing an Orders Object
07:45
446
Adding Orders
02:49
447
Adding an Orders Screen
08:12
448
Using a Side Drawer
05:46
449
Making Orders Expandable & Stateful Widgets vs Providers
10:30
450
Wrap Up
03:31
451
Module Introduction
03:03
452
Snackbars & Undoing "Add to Cart" Actions
10:31
453
Showing Alert Dialogs
07:13
454
Adding a "Manage Products" Page
14:16
455
"Edit Product" Screen & A Problem
05:07
456
Using Forms & Working with Form Inputs
08:00
457
Managing Form Input Focus
04:36
458
Multiline Inputs & Disposing Objects
04:12
459
Image Input & Image Preview
13:16
460
Submitting Forms
12:02
461
Validating User Input
04:15
462
Adding Validation to All Inputs
09:51
463
Saving New Products
03:53
464
Time to Update Products!
16:20
465
Allowing Users to Delete Products
03:40
466
Wrap Up
00:54
467
Module Introduction
02:06
468
On-Device vs Web Storage
04:09
469
How to Connect Flutter to a Database
03:37
470
Preparing Our Backend
04:32
471
How To Send Http Requests
05:57
472
Sending POST Requests
10:56
473
Working with Futures in Dart
07:36
474
[DART DEEP DIVE] Futures & Async Code
09:28
475
Showing a Loading Indicator
07:00
476
Handling Errors Gracefully
12:12
477
Working with "async" & "await"
09:53
478
Fetching Data, initState & "of(context)"
08:29
479
How to Transform Fetched Data
07:39
480
Implementing Pull-to-Refresh
04:58
481
Updating Data via PATCH Requests
06:37
482
Utilizing Optimistic Updating
08:08
483
Creating Custom Exceptions & More Error Handling
09:06
484
A Challenge For You!
01:49
485
Updating the "Favorite" Status Optimistically
06:40
486
Storing Orders in the Web
11:30
487
Fetching Orders & Fixing an Issue
12:23
488
Using the "FutureBuilder" Widget & Improving the Code
13:48
489
Wrap Up
01:55
490
Module Introduction
01:45
491
How Authentication Works
05:47
492
Prepare Backend
03:40
493
Adding the Auth Screen
15:50
494
Adding User Signup
13:34
495
Allowing Users to Log In
06:04
496
Handling Authentication Errors
13:11
497
Managing the Auth Token Locally (in the App)
11:08
498
Using the "ProxyProvider" and Attaching the Token to Outgoing Http Requests
09:50
499
Adding the Token to All Requests
08:32
500
Connecting the "Favorite" Status to Users
10:19
501
Attaching Products to Users & Filtering By Creator
13:26
502
Attaching Orders to Users
02:56
503
Adding a Logout Functionality
04:19
504
Automatically Logging Users Out (After Some Time)
05:27
505
Automatically Logging Users In
18:20
506
Wrap Up
01:37
507
Module Introduction
01:27
508
Animations From Scratch (Completely Manually Controlled)
14:04
509
Using the "AnimatedBuilder" Widget
03:52
510
Working with the "AnimatedContainer"
02:48
511
More Built-in Animation & Transition Widgets
09:13
512
Fading Loaded Images In (And Showing a Placeholder)
03:36
513
Adding a "Hero" Transition
02:36
514
Working with Slivers
05:56
515
Practice: Animating Order Boxes
04:01
516
Implementing Custom Route Transitions
09:51
517
Wrap Up
00:54
518
Module Introduction
01:36
519
Planning the App
03:25
520
PlaceList & Place Provider Setup
12:45
521
Adding the "Add Place" Screen & An Image Input
17:17
522
Using Image Picker & The Device Camera
12:12
523
Storing the Image on the Filesystem (on the Device)
10:16
524
Managing Data & Images via the Provider Package
15:33
525
Handling Errors
01:24
526
Testing on Real Devices
04:38
527
Preparing SQLite
12:34
528
Storing & Fetching Data with SQLite
11:49
529
Adding a Location Input & The "location" Package
09:45
530
Fetching the User Coordinates
02:30
531
Displaying a Static Map Snapshot
08:32
532
Rendering a Dynamic Map (via Google Maps)
13:56
533
Allowing Users to Pick a Location on the Map
09:44
534
Storing the Location in SQLite
18:10
535
Adding a "Place Detail" Screen & Opening the Map in "readonly" Mode
11:34
536
Wrap Up
01:49
537
Module Introduction
01:52
538
What is Firebase?
04:13
539
Creating a New App
04:38
540
Getting Started with Firebase
10:57
541
Getting Started with Flutter & the Firebase SDK
16:23
542
Rendering Stream Data with StreamBuilder
06:27
543
Adding Data
02:40
544
A Basic Authentication Screen
10:26
545
Adding an App Theme
03:40
546
Creating an Authentication Form
14:03
547
Connecting Auth Form & Auth Screen
04:59
548
Implementing Authentication
13:16
549
Storing Extra User Data
06:58
550
Finishing Authentication & Logout
07:34
551
Adding Firebase Security Rules
09:45
552
Listening to Chat Messages
05:12
553
Sending & Ordering Chat Messages
11:57
554
Creating a Basic Chat Bubble Widget
06:05
555
Improving the Chat Bubbles
12:30
556
Testing on Multiple Devices
04:24
557
Displaying User Names
11:37
558
Adding an Image Picker
13:55
559
Preparing File Upload & Validating Images
07:12
560
Uploading Images
10:56
561
Improving Image Upload
05:14
562
Running on a Real iOS Device
02:15
563
Displaying User Images
11:09
564
How Push Notifications Work
05:42
565
An Introduction to Firebase Cloud Messaging
04:27
566
Android & Push Notifications
09:45
567
iOS & Push Notifications
13:42
568
Handling Push Notifications
10:05
569
Getting Started with Firebase Cloud Functions
06:25
570
Setting a Firestore Trigger
08:51
571
Sending Automated Push Notifications
08:47
572
Polishing & Wrap Up
07:16
573
Module Introduction
01:31
574
Sending a Method Call from Flutter
08:34
575
Running Android Code
15:02
576
Running iOS Code
10:26
577
Wrap Up
00:59
578
Module Introduction
01:43
579
Preparing the Code
02:25
580
Preparing the App Configuration
05:55
581
Preparing Third-Party Services
01:19
582
Adding Icons & Splash Screens
09:08
583
Publishing Android Apps
08:47
584
Publishing iOS Apps
06:12
585
You did it!
01:12
586
Your Next Steps (To Become an Awesome Developer!)
03:32
587
How to Plan & Develop Successful Apps
10:59
588
Course Roundup
00:56

Unlock unlimited learning

Get instant access to all 587 lessons in this course, plus thousands of other premium courses. One subscription, unlimited knowledge.

Learn more about subscription

Comments

0 comments

Want to join the conversation?

Sign in to comment

Similar courses

Build a Yelp! Clone for Restaurants with Flutter and Dart

Build a Yelp! Clone for Restaurants with Flutter and Dart

Sources: zerotomastery.io
Build a comprehensive Flutter app for mobile (iOS & Android) and web that allows users to write reviews, ratings, photos, locations, and syncs via the Cloud.
13 hours 15 minutes 53 seconds
Flutter In Production

Flutter In Production

Sources: Code With Andrea
Study flavors, environments, error monitoring, analytics, release management, CI/CD, and prepare your Flutter apps for publishing in the stores...
19 minutes 8 seconds
Line-of-Business Mobile Apps with Flutter and Dart

Line-of-Business Mobile Apps with Flutter and Dart

Sources: fullstack.io
Flutter is a powerful tool for developing cross-platform applications, allowing you to create native packages for iOS, Android, Windows, macOS, and Linux...
Flutter Developer Bootcamp

Flutter Developer Bootcamp

Sources: resocoder.com
Flutter is explosively taking over the cross-platform front-end market. Although it's only 2.5 years since the first stable release, it has surpassed any other competing framewo...
35 hours 46 minutes 42 seconds
The Best Flutter Course On The Internet

The Best Flutter Course On The Internet

Sources: Robert Brunhage, Tadas Petra
Create anything you want with Flutter. Master Flutter with the support of two experienced Google Developer experts. This course will provide you with the...
1 hour 5 minutes 10 seconds