Autoplay
Autocomplete
Previous Lesson
Complete and Continue
Flutter & Dart - The Complete Guide
Introduction
What Is Flutter? (2:49)
Welcome To This Course! (1:16)
Flutter uses Dart! (1:51)
One Codebase, Multiple Platforms (2:56)
Flutter Setup - Overview (3:58)
Windows Setup (13:26)
macOS Setup (17:53)
Project Creation & Setting Up a Code Editor for Flutter Development (5:10)
Running a First Flutter App (9:06)
Understanding Material Design (2:35)
About This Course (4:43)
Course Resources (Code Snapshots, Community & Slides)
Flutter & Dart Basics I - Getting a Solid Foundation [ROLL DICE APP]
Module Introduction (1:21)
Analyzing A New Flutter Project (8:50)
From Dart To Machine Code (3:05)
How Programming Languages Work (5:51)
Starting From Scratch: Understanding Functions (6:05)
Importing Features From Packages (5:02)
How Flutter Apps Start (2:26)
Understanding Widgets (2:52)
Using a First Widget & Passing Values to Functions (4:37)
Positional & Named Arguments (3:58)
Deep Dive: Position & Named Arguments
Combining Multiple Widgets (2:50)
Understanding "const" Values (3:58)
Building More Complex Widget Trees (7:25)
Understanding Value Types (6:54)
Configuring Widgets & Understanding Objects (7:24)
Working with "Configuration Objects" (Non-Widget Objects) (5:14)
Generics, Lists & Adding Gradient Colors (4:13)
How To Configure Widgets & Objects (3:03)
Practice: Styling Text (3:27)
Onwards to Custom Widgets: Why Do You Need Them? (2:37)
Understanding Classes (5:01)
Building Custom Widgets (9:27)
Working with Constructor Functions (5:56)
Splitting Code Across Files (3:18)
Practice: Create a Custom Widget (3:49)
Introducing Variables (5:22)
Variables & Types - Combining Two Key Concepts (2:23)
"final" & "const" - Special Kinds Of "Variables" (4:53)
Instance Variables (Properties) & Configurable Widgets (10:03)
Practice: Reusable Widgets & Constructor Functions (6:40)
Displaying Images & Using Multiple Constructor Functions (6:35)
Adding Buttons & Using Functions As Values (6:09)
Styling Buttons & Working with Padding (6:17)
How NOT To Build Interactive Widgets (3:48)
Introducing Stateful Widgets (15:06)
Generating Random Numbers (7:54)
Module Summary (10:21)
Knowledge Check: Flutter & Dart Basics
Flutter & Dart Basics II - Fundamentals Deep Dive [QUIZ APP]
Module Introduction (2:01)
A Challenge For You! (2:21)
Challenge Solution 1/2 - Creating a Widget (11:46)
Challenge Solution 2/2 - Working with More Widgets (17:05)
Adding Icons to Buttons (3:43)
Adding Transparency to Widgets (4:22)
Repetition & Exercise: Adding a Stateful Widget (10:50)
Rendering Content Conditionally (7:02)
Accepting & Passing Functions as Values (9:16)
The "initState" Method (4:28)
Deep Dive: Flutter's (Stateful) Widget Lifecyle
Using Ternary Expressions & Comparison Operators (7:05)
Understanding "if" Statements (4:52)
Using "if" Statements In Lists
if Statements & Comparison Operators
Adding a Data Model & Dummy Data (8:48)
Configuring a Column (5:35)
Creating a Reusable, Custom Styled Button (12:05)
Accessing List Elements & Object Properties (5:53)
Mapping Lists & Using the Spread Operator (7:45)
Alignment, Margin & Padding (3:57)
Mutating Values in Memory (5:46)
Managing The Questions Index As State (5:49)
More on Button Styling (1:20)
Using Third-Party Packages & Adding Google Fonts (7:26)
Passing Data via Functions Across Widgets (13:18)
More Conditions (4:27)
Getting Started with the Results Screen (8:02)
Passing Data to the Results Screen (2:40)
Introducing Maps & "for" Loops (12:00)
Using "for" Loops In Lists
Accessing Map Values & Using "Type Casting" (10:53)
Combining Columns & Rows (6:07)
Expanded To The Rescue! (3:07)
Filtering & Analyzing Lists (7:43)
Making Content Scrollable with SingleChildScrollView (4:07)
Time to Practice: Flutter Basics - Problem (1:54)
Time to Practice: Flutter Basics - Solution (9:36)
Beyond the Basics: Optional, Important Dart Features (8:53)
Module Summary (7:32)
Debugging Flutter Apps
Module Introduction (0:56)
The Starting Project & A Problem (1:08)
Understanding Error Messages (7:36)
Debugging Apps & Using "Debug Mode" (14:59)
Working with the Flutter DevTools (7:41)
Running the App on Real iOS or Android Devices
Adding Interactivity, More Widgets & Theming [EXPENSE TRACKER APP]
Module Introduction (1:38)
Starting Setup & Repetition Time! (7:07)
Adding an Expense Data Model with a Unique ID & Exploring Initializer Lists (6:59)
Introducing Enums (4:10)
Creating Dummy Data (4:02)
Efficiently Rendering Long Lists with ListView (10:21)
Using Lists Inside Of Lists (2:27)
Creating a Custom List Item with the Card & Spacer Widgets (16:47)
Using Icons & Formatting Dates (7:25)
Setting an AppBar with a Title & Actions (6:46)
Adding a Modal Sheet & Understanding Context (7:24)
Handling User (Text) Input with the TextField Widget (8:14)
Getting User Input on Every Keystroke (4:53)
Letting Flutter do the Work with TextEditingController (4:10)
Time to Practice: Adding a New Input - Problem (1:11)
Time to Practice: Adding a New Input - Solution (3:50)
Closing The Modal Manually (1:47)
Showing a Date Picker (8:33)
Working with "Futures" for Handling Data from the Future (7:41)
Adding a Dropdown Button (10:57)
Combining Conditions with AND and OR Operators (7:48)
Validating User Input & Showing an Error Dialog (5:11)
Saving New Expenses (5:59)
Creating a Fullscreen Modal (2:02)
Using the Dismissible Widget for Dismissing List Items (7:46)
Showing & Managing "Snackbars" (9:13)
Getting Started with Theming (7:43)
Setting & Using a Color Scheme (6:39)
Setting Text Themes (9:00)
Using Theme Data in Widgets (9:02)
Adding Dark Mode (7:13)
Using Another Kind of Loop (for-in) (5:03)
Adding Alternative Constructor Functions & Filtering Lists (4:39)
Adding Chart Widgets (10:27)
Module Summary (2:45)
Building Responsive & Adaptive User Interfaces [EXPENSE TRACKER APP]
Module Introduction (0:57)
What is "Responsiveness"? (2:06)
Locking the Device Orientiation (4:53)
Updating the UI based on the Available Space (7:55)
Understanding Size Constraints (7:09)
Handling to Screen Overlays like the Soft Keyboard (5:12)
Understanding "Safe Areas" (2:53)
Using the LayoutBuilder Widget (12:04)