Flutter & Dart - The Complete Guide [2023 Edition]

68h 5m 58s
English
Paid
May 18, 2023

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!

More

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 Flutter & Dart - The Complete Guide [2023 Edition]

Join premium to watch
Go to premium
# Title Duration
1 Welcome To This Course! 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

Similar courses to Flutter & Dart - The Complete Guide [2023 Edition]

Dart 101

Dart 101fireship.io

Duration 46 minutes 8 seconds
Flutter Developer Bootcamp

Flutter Developer Bootcampresocoder.com

Duration 35 hours 46 minutes 42 seconds
Flutter In Production

Flutter In Productioncode with andrea

Duration 19 minutes 8 seconds
Flutter Masterclass

Flutter MasterclassNet Ninja

Duration 14 hours 56 minutes 50 seconds
Flutter Firebase - The Full Course

Flutter Firebase - The Full Coursefireship.io

Duration 1 hour 48 minutes 32 seconds