English | MP4 | AVC 1280×720 | AAC 44KHz 2ch | 307 lectures (30h 1m) | 41.90 GB
A Complete Guide to the Flutter SDK & Flutter Framework for building native iOS and Android apps
Discover the power of Flutter and Dart to create stunning, high-performance mobile apps for iOS and Android with the most comprehensive and bestselling Flutter course! With over 30 hours of comprehensive content, this course is the ultimate resource for anyone who wants to build beautiful, responsive, and feature-rich applications from scratch.
Learn from a Bestselling Udemy Instructor: Maximilian Schwarzmüller
I’m Maximilian Schwarzmüller, a bestselling, top-rated online course instructor with a vast variety of courses on web and mobile development. I’m excited to be your guide throughout this journey. My goal with this course is to teach you Flutter from the ground up, step-by-step and in a highly practice-oriented way!
Unlock Your Potential in Mobile App Development
This Flutter & Dart course is designed for absolute beginners with no prior programming experience, as well as for those with existing iOS, Android or other development skills. Through video lessons and hands-on projects, you’ll learn the ins and outs of Flutter and Dart!
Throughout the course you’ll build multiple demo apps – ranging from simple to more complex – and, by the end of the course, you’ll be able to build your own iOS and Android apps with Flutter.
Why Choose Flutter?
- Developed by Google, Flutter is a framework that allows you to learn one language (Dart) and build beautiful native mobile apps in no time
- Write code only once and ship your apps both to the Apple App Store and Google Play
- Use the rich widget suite Flutter provides to add common UI elements or build your own custom widgets
What You’ll Learn:
- 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 to add your own
- Debugging tips & 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
- And much more!
Table of Contents
Introduction
1 Welcome To This Course!
2 What Is Flutter
3 Flutter uses Dart!
4 One Codebase, Multiple Platforms
5 Flutter Setup – Overview
6 Windows Setup
7 macOS Setup
8 Project Creation & Setting Up a Code Editor for Flutter Development
9 Course Setup
10 Running a First Flutter App
11 Understanding Material Design
12 About This Course
13 Course Resources (Code Snapshots, Community & Slides)
Flutter & Dart Basics I – Getting a Solid Foundation [ROLL DICE APP]
14 Module Introduction
15 Analyzing A New Flutter Project
16 From Dart To Machine Code
17 How Programming Languages Work
18 Starting From Scratch Understanding Functions
19 Importing Features From Packages
20 How Flutter Apps Start
21 Knowledge Check Flutter & Dart Basics
22 Understanding Widgets
23 Using a First Widget & Passing Values to Functions
24 Positional & Named Arguments
25 Deep Dive Position & Named Arguments
26 Combining Multiple Widgets
27 Understanding const Values
28 Building More Complex Widget Trees
29 Understanding Value Types
30 Configuring Widgets & Understanding Objects
31 Working with Configuration Objects (Non-Widget Objects)
32 Generics, Lists & Adding Gradient Colors
33 How To Configure Widgets & Objects
34 Practice Styling Text
35 Onwards to Custom Widgets Why Do You Need Them
36 Understanding Classes
37 Building Custom Widgets
38 Working with Constructor Functions
39 Splitting Code Across Files
40 Practice Create a Custom Widget
41 Introducing Variables
42 Variables & Types – Combining Two Key Concepts
43 final & const – Special Kinds Of Variables
44 Instance Variables (Properties) & Configurable Widgets
45 Practice Reusable Widgets & Constructor Functions
46 Displaying Images & Using Multiple Constructor Functions
47 Adding Buttons & Using Functions As Values
48 Styling Buttons & Working with Padding
49 How NOT To Build Interactive Widgets
50 Introducing Stateful Widgets
51 Generating Random Numbers
52 Module Summary
Flutter & Dart Basics II – Fundamentals Deep Dive [QUIZ APP]
53 Module Introduction
54 A Challenge For You!
55 Challenge Solution 12 – Creating a Widget
56 Challenge Solution 22 – Working with More Widgets
57 Adding Icons to Buttons
58 Adding Transparency to Widgets
59 Repetition & Exercise Adding a Stateful Widget
60 Rendering Content Conditionally
61 Accepting & Passing Functions as Values
62 The initState Method
63 Using Ternary Expressions & Comparison Operators
64 Understanding if Statements
65 Adding a Data Model & Dummy Data
66 Configuring a Column
67 Creating a Reusable, Custom Styled Button
68 Accessing List Elements & Object Properties
69 Mapping Lists & Using the Spread Operator
70 Alignment, Margin & Padding
71 Mutating Values in Memory
72 Managing The Questions Index As State
73 More on Button Styling
74 Using Third-Party Packages & Adding Google Fonts
75 Passing Data via Functions Across Widgets
76 More Conditions
77 Getting Started with the Results Screen
78 Passing Data to the Results Screen
79 Introducing Maps & for Loops
80 Accessing Map Values & Using Type Casting
81 Combining Columns & Rows
82 Expanded To The Rescue!
83 Filtering & Analyzing Lists
84 Making Content Scrollable with SingleChildScrollView
85 Beyond the Basics Optional, Important Dart Features
86 Module Summary
Debugging Flutter Apps
87 Module Introduction
88 The Starting Project & A Problem
89 Understanding Error Messages
90 Debugging Apps & Using Debug Mode
91 Working with the Flutter DevTools
92 Running the App on Real iOS or Android Devices
Adding Interactivity, More Widgets & Theming [EXPENSE TRACKER APP]
93 Module Introduction
94 Starting Setup & Repetition Time!
95 Adding an Expense Data Model with a Unique ID & Exploring Initializer Lists
96 Introducing Enums
97 Creating Dummy Data
98 Efficiently Rendering Long Lists with ListView
99 Using Lists Inside Of Lists
100 Creating a Custom List Item with the Card & Spacer Widgets
101 Using Icons & Formatting Dates
102 Setting an AppBar with a Title & Actions
103 Adding a Modal Sheet & Understanding Context
104 Handling User (Text) Input with the TextField Widget
105 Getting User Input on Every Keystroke
106 Letting Flutter do the Work with TextEditingController
107 Time to Practice Adding a New Input
108 Exercise Solution
109 Closing The Modal Manually
110 Showing a Date Picker
111 Working with Futures for Handling Data from the Future
112 Adding a Dropdown Button
113 Combining Conditions with AND and OR Operators
114 Validating User Input & Showing an Error Dialog
115 Saving New Expenses
116 Creating a Fullscreen Modal
117 Using the Dismissible Widget for Dismissing List Items
118 Showing & Managing Snackbars
119 Flutter & Material 3
120 Getting Started with Theming
121 Setting & Using a Color Scheme
122 Setting Text Themes
123 Using Theme Data in Widgets
124 Important Adding Dark Mode
125 Adding Dark Mode
126 Using Another Kind of Loop (for-in)
127 Adding Alternative Constructor Functions & Filtering Lists
128 Adding Chart Widgets
129 Module Summary
Building Responsive & Adaptive User Interfaces [EXPENSE TRACKER APP]
130 Module Introduction
131 What is Responsiveness
132 Locking the Device Orientiation
133 Updating the UI based on the Available Space
134 Understanding Size Constraints
135 Handling to Screen Overlays like the Soft Keyboard
136 Understanding Safe Areas
137 Using the LayoutBuilder Widget
138 Building Adaptive Widgets
139 Module Summary
Flutter & Dart Internals [TODO APP]
140 Module Introduction
141 Three Trees Widget Tree, Element Tree & Render Tree
142 How The UI Is Updated
143 Refactor & Extract Widgets To Avoid Unnecessary Builds
144 Understanding Keys – Setup
145 Which Problem Do Keys Solve
146 Understanding & Using Keys
147 Mutating Values in Memory & Making Sense of var, final & const
148 Module Summary
Building Multi-Screen Apps & Navigating Between Screens [MEALS APP]
149 Module Introduction
150 Project Setup
151 Using a GridView
152 Widgets vs Screens
153 Displaying Category Items on a Screen
154 Making any Widget Tappable with InkWell
155 Adding Meals Data
156 Loading Meals Data Into a Screen
157 Adding Cross-Screen Navigation
158 Passing Data to the Target Screen
159 Introducing the Stack Widget
160 Improving the MealItem Widget
161 Adding Navigation to the MealDetails Screen
162 Improving the MealDetails Screen
163 Adding Tab-based Navigation
164 Passing Functions Through Multiple Layers of Widgets (for State Management)
165 Managing App-wide State & Data
166 Adding a Side Drawer
167 Closing the Drawer Manually
168 Adding a Filter Item
169 Replacing Screens (Instead of Pushing)
170 Adding More Filter Options
171 Replacing WillPopScope with PopScope
172 Returning Data When Leaving a Screen
173 Reading & Using Returned Data
174 Applying Filters
175 An Alternative Navigation Pattern Using Named Routes
176 Module Summary
Managing App-wide State [MEALS APP]
177 Module Introduction
178 What’s The Problem
179 Installing the Solution Riverpod
180 How State Management with Riverpod Works
181 Creating a Provider
182 Using a Provider
183 Creating a More Complex Provider with StateNotifier
184 Using the FavoritesProvider
185 Triggering a Notifier Method
186 Getting Started with Another Provider
187 Combining Local & Provider-managed State
188 Outsourcing State Into The Provider
189 Connecting Multiple Providers With Each Other (Dependent Providers)
190 Swapping The Favorite Button Based On Provider State
191 Module Summary
192 riverpod vs provider – There are many Alternatives!
Adding Animations [MEALS APP]
193 Module Introduction
194 Setup & Understanding Explicit vs Implicit Animations
195 Explicit Animations Adding an Animation Controller
196 Explicit Animations Playing the Animation with AnimatedBuilder
197 Finetuning Explicit Animations
198 Getting Started with Implicit Animations
199 Configuring Implicit Animations
200 Adding Multi-Screen Transitions
201 Module Summary
Handling User Input & Working with Forms [SHOPPING LIST APP]
202 Module Introduction
203 Setup & A Challenge For You
204 Challenge Solution 1 – Building & Using Models
205 Challenge Solution 2 – Building the List UI
206 Adding a New Item Screen
207 The Form & TextFormField Widgets
208 A Form-aware Dropdown Button
209 Adding Buttons to a Form
210 Adding Validation Logic
211 Getting Form Access via a Global Key
212 Extracting Entered Values
213 Passing Data Between Screens
214 Final Challenge Solution
215 Module Summary
Connecting a Backend & Sending HTTP Requests [SHOPPING LIST APP]
216 Module Introduction
217 What’s a Backend And Why Would You Want One
218 What Is HTTP & How Does It Work
219 Setting Up a Dummy Backend (Firebase)
220 Adding the http Package
221 Sending a POST Request to the Backend
222 Working with the Request & Waiting for the Response
223 Fetching & Transforming Data
224 Avoiding Unnecessary Requests
225 Managing the Loading State
226 Error Response Handling
227 Sending DELETE Requests
228 Handling the No Data Case
229 Better Error Handling
230 Module Summary
231 Using the FutureBuilder Widget
Using Native Device Features (e.g., Camera) [FAVORITE PLACES APP]
232 Module Introduction
233 Setup & A Challenge For You!
234 Adding a Place Model (Challenge Solution 16)
235 Adding a Places Screen (Challenge Solution 26)
236 Adding an Add Place Screen (Challenge Solution 36)
237 Adding riverpod & A Provider (Challenge Solution 46)
238 Adding Places with Provider & Displaying Places (Challenge Solution 56)
239 Adding a Place Details Screen (Challenge Solution 66)
240 Adding a Pick an Image Input
241 Installing the Image Picker Package
242 Using the Device Camera For Taking Pictures
243 Adding the Picked Image to the Model & Add Place Form
244 Previewing the Picked Image
245 Important location Package & Android
246 Adding the location Package & Starting with the Get Location Input Widget
247 Getting the User’s Current Location
248 Using the Google Maps API – Setup
249 Using Google’s Geocoding API
250 Storing the Location Data in the Model
251 Displaying a Location Preview Map Snapshot via Google
252 Using the Picked Location in the Form
253 Outputting the Location Data
254 Installing & Configuring the Google Maps Package
255 Adding a Map Screen
256 Displaying the Picked Place on a Dynamic Map
257 Handling Map Taps for Selecting a Location Manually
258 Using the Map Screen in the Add Place Form
259 Installing Packages for Local (On-Device) Data Storage
260 Storing the Picked Image Locally
261 Storing Place Data in a (On-Device) SQL Database
262 Loading Data from the SQL Database
263 Using a FutureBuilder for Loading Data
264 Module Summary
265 Adding Your Own Native Code
Push Notifications & More Building a Chat App with Flutter & Firebase
266 Module Introduction
267 App & Firebase Setup
268 Adding an Authentication Screen
269 Adding Buttons & Modes to the Authentication Screen
270 Validating User Input
271 Firebase CLI & SDK Setup 12
272 FlutterFire Configuration
273 Firebase CLI & SDK Setup 22
274 Signing Users Up
275 Logging Users In
276 Showing Different Screens Based On The Authentication State
277 Adding a Splash Screen (Loading Screen)
278 Adding User Logout
279 Image Upload Setup & First Steps
280 Adding a User Image Picker Widget
281 Using the ImagePicker Package
282 Managing The Selected Image In The Authentication Form
283 Uploading Images To Firebase
284 Showing a Loading Spinner Whilst Uploading
285 Adding a Remote Database Firestore Setup
286 Sending Data to Firestore
287 Storing a Username
288 Adding ChatMessages & Input Widgets
289 A Note About Reading Data From Firestore
290 Sending & Reading Data To & From Firestore
291 Loading & Displaying Chat Messages as a Stream
292 Styling Chat Message Bubbles
293 Push Notifications – Setup & First Steps
294 Requesting Permissions & Getting an Address Token
295 Testing Push Notifications
296 Working with Notification Topics
297 Sending Push Notifications Automatically via Cloud Functions
298 Module Summary
About The Course Update
299 About the Course Update & How To Proceed
300 Old Course Content
Next Steps & Roundup
301 Publishing iOS & Android Apps
302 Course Roundup
303 Bonus Lecture
Resolve the captcha to access the links!