Learn Flutter & Dart to Build iOS & Android Apps

Learn Flutter & Dart to Build iOS & Android Apps
Learn Flutter & Dart to Build iOS & Android Apps
English | MP4 | AVC 1280×720 | AAC 48KHz 2ch | 25.5 Hours | 19.6 GB

A Complete Guide to the Flutter SDK & Flutter Framework for building native 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
  • How to publish your app to the app stores
  • And more!
Table of Contents

1 Introduction
2 What is Flutter?
3 Understanding the Flutter Architecture
4 Flutter macOS Setup
5 macOS Development Environment
6 Flutter Windows Setup
7 Windows Development Environment
8 Flutter Alternatives
9 Flutter & Material Design
10 Flutter is Under Active Development!
11 Course Outline
12 How To Get The Most Out Of The Course
13 Useful Resources & Links

Diving Into the Basics & Understanding Widgets
14 Module Introduction
15 Creating a New Flutter Project
16 Exploring the Default Project Structure
17 Diving Into the “main.dart” File
18 Widgets in Flutter – Theory
19 Creating a Widget
20 Understanding Classes & Constructors
21 Adding the “Build” Method
22 Adding the Scaffold
23 Diving Deeper Into the Syntax
24 Adding Cards & Images
25 Diving Into the Official Docs
26 Adding a Button
27 Creating a Stateful Widget
28 Managing Data Inside Stateful Widgets
29 Adding the Stateful Widget & Lists
30 Splitting our Code Up
31 Creating the “Product Manager” Widget
32 Passing Data to Stateful Widgets
33 initState() and super.initState()
34 Understanding Lifecycle Hooks
35 Diving Into Google’s Material Design
36 Understanding Additional Dart Features
37 Passing Data Up
38 Understanding “const” & “final”
39 Dart Types, Syntax & Core Features
40 Wrap Up
41 Useful Resources & Links

Debugging Flutter Apps
42 Module Introduction
43 Fixing Syntax Errors
44 Understanding Runtime Errors & Runtime Messages
45 Dealing with Logical Errors
46 Using Breakpoints
47 Debugging the User Interface
48 More About Visual Helpers
49 Wrap Up
50 Useful Resources & Links

Running the App on Different Devices
51 Testing Devices
52 How to Start the App
53 Testing a Real Android Device
54 Using the iOS Emulator & a Real Device
55 Running the App – Detailed Instructions
56 Using the Native IDE Consoles

Working with Lists & Conditionals
57 Module Introduction
58 Creating Scrollable Lists with “ListView”
59 Optimizing the List Loading Behaviour
60 Rendering Content Conditionally
61 Alternative Approaches to Render Content Conditionally
62 One Important Gotcha
63 Wrap Up
64 Useful Resources & Links

65 Module Introduction
66 Adding Multiple Pages to our App
67 Adding Buttons
68 Implementing a Basic Navigation
69 Improving the Look of the Product Page
70 Passing Data Around (“Pushing” the Page)
71 Passing Information Back (“Popping” the Page)
72 Adding Reactions Upon Button Pressing
73 Adding the Basic Authentication Page & Replacing Routes
74 Adding the Sidedrawer & the Hamburger Icon
75 Understanding Stack Based Navigation
76 Adding Tabs
77 Finishing the Tab Navigation
78 Adding Named Routes
79 Parsing Route Data Manually
80 Lifting State Up
81 Using the Named Routes
82 Working with “onUnknownRoute” as Fallback
83 Adding Alert Dialogs
84 Showing a Modal
85 Wrap Up
86 Useful Resources & Links

Handling User Input
87 Module Introduction
88 Saving User Input
89 Configuring Text Fields
90 Styling Text Fields
91 Fixing a Bug & Adding a Button
92 Using our Form to Create a New Product
93 Improving the Style of our Form
94 Fixing a Tiny “Error”
95 Adding a Switch
96 Wrap Up
97 Useful Resources & Links

Diving Deeper Into Widgets
98 Module Introduction
99 Exploring the Widget Catalogue
100 There’s More Than One Widget For The Job
101 The Most Important Widgets
102 Working with Text & Fonts
103 Working with Rows
104 Decorating Boxes & Styling a Price Tag
105 Setting Borders
106 Understanding “Expanded” & “Flexible”
107 Adding a Background Image
108 Centering Input Fields
109 Adding Icons to our Sidemenu
110 Adding Icon Buttons
111 Outsourcing Code into Separate Widgets
112 Refactoring our Code
113 Creating a Standardized Tile Widget
114 Adding Separate Methods for Specific Widgets
115 Optimizing our Project
116 Responsive Design Problems
117 Adding Media Queries
118 Understanding Media Queries with ListView
119 Working with Themes
120 Listening to Touch Events with the Gesture Detector
121 Wrap Up
122 Useful Resources & Links

Working with Forms
123 Module Introduction
124 Using the Form Widget
125 Adding Form Validation
126 Advanced Validation
127 A Note on the “Price” Input and the Usage of Commas/ Dots
128 Closing the Keyboard
129 Submitting Data
130 Outputting Lists of Products
131 Re-Using the Product Create Form
132 Setting Initial Values
133 Updating Products
134 Ensuring Input Visibility
135 Wrap Up
136 Useful Resources & Links

Improving the App
137 Module Introduction
138 Improving the List Tile
139 Adding the Dismissible Widget
140 Deleting Products Upon Swipe
141 Restructuring the Code & Wrap Up
142 Useful Resources & Links

Models & State Management
143 Module Introduction
144 What can be Improved?
145 Adding a Product Model
146 Creating a Scoped Model
147 Connecting the Scoped Model
148 Providing the Scoped Model
149 Viewing Single Products
150 Editing & Deleting Products with the Scoped Model
151 Finishing the Product Model
152 A Note on Immutability
153 Creating the Toggle Favorite Method
154 Working on the Favorite Feature
155 Adding “notifylisteners”
156 Finishing the Favorite Feature
157 Fixing a Bug related to the “Favoriting” Feature
158 Adding a User Model
159 MUST READ: Mixins & The Latest version of Dart
160 Using Mixins to Merge Models
161 Logging in with the Main & the User Model
162 Connecting Models & Sharing Data
163 MUST READ: Changing Mixins Syntax
164 Improving the Code & Fixing an Error
165 MUST READ: Unselecting the Product after Editing
166 Wrap Up
167 Useful Resources & Links

Flutter & HTTP
168 Module Introduction
169 Understanding the Backend Setup
170 Sending a POST Request
171 Using the Response
172 Getting Data From a Server
173 Transforming & Extracting Response Data
174 Displaying a Loading Spinner
175 Finishing the Loading Spinner
176 Updating Products
177 Deleting Products
178 Using Pull to Refresh
179 Adding “fadein” to the Image Placeholder
180 Adjusting the Scoped Model & the Selected Product
181 Fixing the Product Selection
182 Handling Error Responses
183 Generic Error Handling
184 Adding “async” “await”
185 Improving our Code
186 Wrap Up
187 Useful Resources & Links

188 Module Introduction
189 How Authentication Works
190 Adding a “Confirm Password” Textfield
191 Implementing the Signup Functionality
192 Handling Errors
193 Adding a Spinner Whilst Signing Up
194 Adding the Signin Functionality
195 Refactoring our Code
196 Authenticating Requests with Tokens
197 Storing the Token on the Device
198 Signing Users In Automatically
199 Adding a Logout Button
200 Adding Autologout
201 Route Protection & Redirection
202 Fixing the Manual Logout
203 Time for a Quick Recap Regarding our Code Structure
204 Adding Optimistic Updating to Store the Favorite Status
205 Fetching the Favorite Status
206 Allow Editing for own Posts Only
207 Wrap Up
208 Useful Resources & Links

Adding Google Maps to our App
209 Module Introduction
210 Using MapView with the latest Flutter Version
211 Unlocking the Required APIs
212 Requesting Permissions
213 Preparing our Text Form Field
214 Adding a Static Dummy Map
215 Sending a Request to Convert an Address to Coordinates
216 Adding Geocoding & Maps with Real Coordinates
217 Working on the Map Control
218 Storing Location Data in the Database
219 Fixing a Bug
220 Loading Location Data from the Backend
221 Updating an Existing Product’s Position
222 Adding the Update Method for the Location
223 Adding the Location Package
224 Using the Location Package with Version 1.4
225 Getting the User Location
226 Preventing Memory Leaks
227 Displaying the Address
228 Showing a Fullscreen Map
229 Wrap Up
230 Useful Resources & Links

Accessing the Device Camera
231 Module Introduction
232 Adding an Image Picker Button
233 Adding the “Use Camera” & “Gallery” Buttons
234 Connecting the “Choose” Buttons to the Image Picker
235 Adding an Image Preview
236 Adding Text Editing Controllers
237 Setting Up Firebase Cloud Functions
238 Adjusting Firebase Functions (Fixing an Error)
239 Adding Server Side Code
240 Reading Incoming Files & Fields
241 Storing Data and Move it to a Temporary Storage
242 Deploying our Firebase Cloud Function
243 Configuring the Upload Request
244 Setting Headers to Add the Token
245 Fixing an Error
246 Fetching & Using Images
247 Previewing & Editing the Image
248 Adding the Image Upload Flow
249 Deleting Images When Deleting a Product
250 Wrap Up
251 Useful Resources & Links

Adding Animations to our Project
252 Module Introduction
253 Adding Floating Action Buttons (FABs)
254 Adding Functionality to our Favorite Button
255 Working on the Contact Button
256 Animating the Contact Icon
257 Animating the Favorite Icon
258 Animating the Options Button
259 Fading the Password Field In & Out
260 Sliding the Password Field In & Out
261 Adding Hero Widgets
262 Adding the Sliver Effect
263 Adding Route Transitions
264 Wrap Up
265 Useful Resources & Links

Polishing & Bugfixing
266 Module Introduction
267 Fixing an Autologout Bug
268 Fixing the Price Input in Landscape Mode
269 Fixing the Filtered Product Index
270 Fixing the Product Title Style & the Favorite Product Selection
271 Toggling the Favorite Status
272 Clearing All Products Before Fetching
273 Testing the iPhone & Fixing the Product Reset Logic
274 Adding Space on the Product Card
275 Using Flutter Analyze
276 Possible Code Restructurings
277 Managing Global Values
278 Testing the App on an Android Device
279 Testing the App on an iPhone & Fixing the European Decimal Comma
280 Useful Resources & Links

Running Platform Specific Code
281 Module Introduction
282 Understanding Material Design & Cupertino
283 Detecting the Platform
284 Using Platform Specific Widgets
285 Adding a Platform Specific Theme
286 When Should we Use Platform Specific Themes?
287 iOS Support since Flutter 0.8.2
288 Wrap Up
289 Useful Resources & Links

Adding Native Code to our Flutter App
290 Module Introduction
291 Understanding the Communication Between Flutter & Native Code
292 Writing Native Android Code
293 Running Native Android Code
294 Writing Native iOS Code
295 Running Native iOS Code
296 Useful Resources & Links

Publishing our App to the Google Play & the App Store
297 Module Introduction
298 Finalizing our Code
299 Restricting API Keys
300 Installing Flutter Launch Icons
301 Mipmaps & Drawables
302 Adding a Splash Screen
303 Adjusting the App Name
304 Deploying the Android App
305 Deploying the iOS App
306 Useful Resources & Links

307 Course Roundup