Видео курса

  • Урок 1. 00:01:49
    Introduction
  • Урок 2. 00:05:55
    What is Flutter?
  • Урок 3. 00:04:49
    Understanding the Flutter Architecture
  • Урок 4. 00:03:13
    How Flutter & Dart Code Gets Compiled To Native Apps
  • Урок 5. 00:02:50
    Understanding Flutter Versions
  • Урок 6. 00:18:51
    Flutter macOS Setup
  • Урок 7. 00:04:09
    macOS Development Environment
  • Урок 8. 00:19:17
    Flutter Windows Setup
  • Урок 9. 00:03:46
    Windows Development Environment
  • Урок 10. 00:01:16
    Flutter & Material Design
  • Урок 11. 00:06:07
    Flutter Alternatives
  • Урок 12. 00:06:41
    Course Outline
  • Урок 13. 00:02:41
    How To Get The Most Out Of The Course
  • Урок 14. 00:02:26
    Module Introduction
  • Урок 15. 00:12:16
    Creating a New Project
  • Урок 16. 00:08:21
    An Overview of the Generated Files & Folders
  • Урок 17. 00:05:33
    Analyzing the Default App
  • Урок 18. 00:17:18
    Dart Basics
  • Урок 19. 00:13:07
    More Dart Basics
  • Урок 20. 00:11:03
    Building an App From Scratch
  • Урок 21. 00:03:26
    Running the App on an Emulator
  • Урок 22. 00:08:30
    Class Constructors & Named Arguments
  • Урок 23. 00:08:11
    First Summary & Additional Syntax
  • Урок 24. 00:07:41
    Building a Widget Tree
  • Урок 25. 00:03:14
    Visible (Input / Output) & Invisible (Layout / Control) Widgets
  • Урок 26. 00:06:53
    Adding Layout Widgets
  • Урок 27. 00:07:31
    Connecting Functions & Buttons
  • Урок 28. 00:06:39
    Anonymous Functions
  • Урок 29. 00:06:37
    Updating Widget Data (Or: Using StatelessWidget Incorrectly)
  • Урок 30. 00:11:59
    Updating Correctly with Stateful Widgets
  • Урок 31. 00:02:28
    A Brief Look Under The Hood
  • Урок 32. 00:05:17
    Using Private Properties
  • Урок 33. 00:11:51
    Creating a New, Custom Widget
  • Урок 34. 00:08:02
    First Styling & Layouting Steps
  • Урок 35. 00:04:07
    Enums & Multiple Constructors
  • Урок 36. 00:02:40
    Official Docs & The Widget Catalog
  • Урок 37. 00:10:39
    Passing Callback Functions Around
  • Урок 38. 00:05:53
    Introducing Maps
  • Урок 39. 00:10:25
    Mapping Lists to Widgets
  • Урок 40. 00:10:51
    final vs const
  • Урок 41. 00:06:52
    Introducing "if" Statements
  • Урок 42. 00:11:16
    [DART DEEP DIVE] More on "if" Statements
  • Урок 43. 00:02:04
    [DART DEEP DIVE] The "null" Value
  • Урок 44. 00:02:21
    Outputting Widgets Conditionally
  • Урок 45. 00:09:58
    Splitting the App Into Widgets
  • Урок 46. 00:07:47
    Calculating a Total Score
  • Урок 47. 00:06:35
    Getters & "else-if"
  • Урок 48. 00:04:54
    Resetting the Quiz
  • Урок 49. 00:01:54
    Wrap Up
  • Урок 50. 00:02:01
    Module Introduction
  • Урок 51. 00:03:57
    Running the App on a Real Android Device
  • Урок 52. 00:05:55
    Running the App on an iOS Emulator
  • Урок 53. 00:00:39
    Running the App on a Real iOS Device
  • Урок 54. 00:02:26
    Working with the Emulators / Using the Emulators
  • Урок 55. 00:05:28
    Understanding Error Messages & Fixing Errors
  • Урок 56. 00:06:22
    Using the Debugger
  • Урок 57. 00:04:55
    Getting Started with the Dart DevTools
  • Урок 58. 00:03:24
    Understanding the Repaint Rainbow
  • Урок 59. 00:01:35
    Wrapping up the Dart DevTools
  • Урок 60. 00:03:20
    Module Introduction
  • Урок 61. 00:09:43
    An Overview of the Core Flutter Widgets
  • Урок 62. 00:02:44
    Planning the App
  • Урок 63. 00:09:19
    Combining Widgets
  • Урок 64. 00:06:12
    Understanding Column Alignment
  • Урок 65. 00:08:29
    Not a Widget: Adding a Transaction Model & Transaction Data
  • Урок 66. 00:03:40
    Mapping Data Into Widgets
  • Урок 67. 00:05:27
    Building a Custom List Item
  • Урок 68. 00:05:13
    Styling a Container
  • Урок 69. 00:02:47
    Styling Text
  • Урок 70. 00:01:56
    More Styling!
  • Урок 71. 00:03:39
    Containers vs Columns vs Rows
  • Урок 72. 00:05:22
    Using String Interpolation
  • Урок 73. 00:07:30
    Installing External Packages & Formatting Dates
  • Урок 74. 00:09:42
    Adding Text Input Widgets (TextField)
  • Урок 75. 00:09:20
    Fetching User Input
  • Урок 76. 00:12:45
    Splitting the App Into Widgets
  • Урок 77. 00:06:34
    Connecting Widgets & Managing Data / State
  • Урок 78. 00:03:59
    Adding User Transactions to the List
  • Урок 79. 00:06:12
    Making the List Scrollable!
  • Урок 80. 00:12:03
    Working with ListViews
  • Урок 81. 00:08:29
    Further Input & Output Styling and Configuration
  • Урок 82. 00:04:33
    Adding AppBar Buttons & Floating Action Buttons
  • Урок 83. 00:09:33
    Showing a Modal Bottom Sheet
  • Урок 84. 00:05:04
    Improving & Styling the Modal Bottom Sheet
  • Урок 85. 00:08:43
    Configuring & Using Themes
  • Урок 86. 00:11:08
    Custom Fonts & Working with Text Themes
  • Урок 87. 00:07:58
    Adding Images to the App
  • Урок 88. 00:04:23
    Planning the Chart Widget
  • Урок 89. 00:13:48
    Looping Through Lists
  • Урок 90. 00:07:25
    Deriving Recent Transactions
  • Урок 91. 00:11:00
    Creating Bars for our Chart
  • Урок 92. 00:06:20
    Populating the Chart with Values
  • Урок 93. 00:05:26
    Finishing the Chart Bars
  • Урок 94. 00:10:24
    Flexible & Expanded: Deep Dive
  • Урок 95. 00:05:30
    Adding a ListTile Widget
  • Урок 96. 00:03:09
    Improving the Overall Chart
  • Урок 97. 00:05:08
    Widgets & Configuring Widgets - Summary / Overview
  • Урок 98. 00:05:20
    Getting Started with Date Selection
  • Урок 99. 00:11:14
    Showing a DatePicker
  • Урок 100. 00:03:08
    Adding Transactions with a Date
  • Урок 101. 00:07:03
    Deleting Transactions & Using IconButtons
  • Урок 102. 00:05:35
    Final Polishing!
  • Урок 103. 00:03:55
    Wrap Up
  • Урок 104. 00:01:38
    Module Introduction
  • Урок 105. 00:05:56
    What does "Responsive" and "Adaptive" Mean?
  • Урок 106. 00:03:05
    Examples: Where we could improve the App!
  • Урок 107. 00:09:14
    Calculating Sizes Dynamically
  • Урок 108. 00:07:44
    Using the LayoutBuilder Widget
  • Урок 109. 00:03:23
    Controlling the Device Orientation
  • Урок 110. 00:04:43
    Rendering Alternative Landscape Content - 1
  • Урок 111. 00:02:59
    Finishing Landscape Mode
  • Урок 112. 00:05:34
    Showing Different Content Based on Device Orientation
  • Урок 113. 00:06:11
    Respecting the Softkeyboard Insets
  • Урок 114. 00:04:15
    Using the Device Size in Conditions
  • Урок 115. 00:02:07
    Managing the MediaQuery Object
  • Урок 116. 00:05:37
    Checking the Device Platform
  • Урок 117. 00:09:06
    Using Cupertino (iOS) Widgets
  • Урок 118. 00:01:44
    Using the SafeArea
  • Урок 119. 00:00:32
    More Cupertino Styles
  • Урок 120. 00:03:12
    Using Cupertino Buttons
  • Урок 121. 00:05:05
    Creating Custom Adaptive Widgets
  • Урок 122. 00:01:44
    Wrap Up
  • Урок 123. 00:02:33
    Module Introduction
  • Урок 124. 00:03:14
    The Problem At Hand
  • Урок 125. 00:10:46
    Widget Tree & Element Tree - What, Why and How?
  • Урок 126. 00:08:49
    How Flutter Rebuilds & Repaints the Screen
  • Урок 127. 00:09:19
    How Flutter Executes build()
  • Урок 128. 00:11:17
    Using "const" Widgets & Constructors
  • Урок 129. 00:03:58
    Writing Good Code
  • Урок 130. 00:06:08
    Extracting Widgets
  • Урок 131. 00:10:22
    Using Builder Methods
  • Урок 132. 00:12:56
    Understanding the Widget Lifecycle
  • Урок 133. 00:09:26
    Understanding the App Lifecycle
  • Урок 134. 00:06:47
    Understanding Context
  • Урок 135. 00:05:35
    A Problem with Lists & Stateful Widgets
  • Урок 136. 00:02:48
    Understanding the Problem Root
  • Урок 137. 00:11:16
    Using Keys
  • Урок 138. 00:01:42
    Wrap Up
  • Урок 139. 00:04:42
    Module Introduction
  • Урок 140. 00:04:46
    Planning the App
  • Урок 141. 00:11:19
    Starting With The App - Adding Base Data
  • Урок 142. 00:07:50
    Creating a Grid & Working with Linear Gradients
  • Урок 143. 00:05:50
    Registering a Screen as the Main Screen
  • Урок 144. 00:07:05
    Styling & Theming
  • Урок 145. 00:10:11
    Navigating to a New Page
  • Урок 146. 00:08:57
    Passing Data via the Constructor
  • Урок 147. 00:06:43
    Using Named Routes & Passing Data With Named Routes
  • Урок 148. 00:02:47
    Diving Deeper into Named Routes
  • Урок 149. 00:12:45
    Adding a Meal Model & Data
  • Урок 150. 00:04:57
    Selecting Meals for a Chosen Category
  • Урок 151. 00:15:00
    Displaying Recipe Items & Using Network Images
  • Урок 152. 00:15:22
    Finishing the Meal List Item
  • Урок 153. 00:07:18
    Navigating to the Meal Detail Page
  • Урок 154. 00:05:28
    onGenerateRoute & onUnknownRoute
  • Урок 155. 00:17:35
    Finishing the Meal Detail Page
  • Урок 156. 00:10:27
    Adding a TabBar to the Appbar
  • Урок 157. 00:13:13
    Adding a Bottom TabBar
  • Урок 158. 00:12:38
    Adding a Custom Drawer
  • Урок 159. 00:04:04
    Adding Links to the Drawer
  • Урок 160. 00:04:22
    Replacing Pages (Instead of Pushing)
  • Урок 161. 00:17:07
    Popping Pages & Passing Data Back
  • Урок 162. 00:08:32
    Adding Filter Switches
  • Урок 163. 00:16:20
    Adding Filtering Logic
  • Урок 164. 00:19:58
    Adding a "Mark as Favorite" Feature
  • Урок 165. 00:02:41
    A Problem!
  • Урок 166. 00:02:56
    Wrap Up
  • Урок 167. 00:02:14
    Module Introduction
  • Урок 168. 00:06:56
    Planning the App
  • Урок 169. 00:10:46
    Defining a Data Model
  • Урок 170. 00:16:25
    Working on the "Products" Grid & Item Widgets
  • Урок 171. 00:05:15
    Styling & Theming the App
  • Урок 172. 00:10:31
    Adding Navigation to the App
  • Урок 173. 00:06:30
    Why State Management? And what is "State" and "State Management"?
  • Урок 174. 00:02:56
    Understanding the "Provider" Package & Approach
  • Урок 175. 00:19:45
    Working with Providers & Listeners
  • Урок 176. 00:06:24
    [DART DEEP DIVE] Inheritance ("extends") vs Mixins ("with")
  • Урок 177. 00:05:59
    Listening in Different Places & Ways
  • Урок 178. 00:13:04
    Using Nested Models & Providers
  • Урок 179. 00:03:02
    Exploring Alternative Provider Syntaxes
  • Урок 180. 00:07:26
    Using "Consumer" instead of "Provider.of"
  • Урок 181. 00:15:41
    Local State vs App-wide State
  • Урок 182. 00:08:40
    Adding Shopping Cart Data
  • Урок 183. 00:10:00
    Working with Multiple Providers
  • Урок 184. 00:11:32
    Connecting the Cart Provider
  • Урок 185. 00:11:38
    Working on the Shopping Cart & Displaying a Total
  • Урок 186. 00:11:18
    Displaying a List of Cart Items
  • Урок 187. 00:08:48
    Making Cart Items Dismissible
  • Урок 188. 00:04:50
    Adding Product Detail Data
  • Урок 189. 00:07:07
    Providing an Orders Object
  • Урок 190. 00:08:00
    Adding Orders
  • Урок 191. 00:08:12
    Adding an Orders Screen
  • Урок 192. 00:05:46
    Using a Side Drawer
  • Урок 193. 00:10:30
    Making Orders Expandable & Stateful Widgets vs Providers
  • Урок 194. 00:03:30
    Wrap Up
  • Урок 195. 00:03:03
    Module Introduction
  • Урок 196. 00:10:31
    Snackbars & Undoing "Add to Cart" Actoins
  • Урок 197. 00:07:13
    Showing Alert Dialogs
  • Урок 198. 00:14:16
    Adding a "Manage Products" Page
  • Урок 199. 00:05:07
    "Edit Product" Screen & A Problem
  • Урок 200. 00:03:32
    Using Forms & Working with Form Inputs
  • Урок 201. 00:04:36
    Managing Form Input Focus
  • Урок 202. 00:04:12
    Multiline Inputs & Disposing Objects
  • Урок 203. 00:13:16
    Image Input & Image Preview
  • Урок 204. 00:12:02
    Submitting Forms
  • Урок 205. 00:04:15
    Validating User Input
  • Урок 206. 00:09:51
    Adding Validation to All Inputs
  • Урок 207. 00:03:53
    Saving New Products
  • Урок 208. 00:16:20
    Time to Update Products!
  • Урок 209. 00:03:40
    Allowing Users to Delete Products
  • Урок 210. 00:05:13
    Wrap Up
  • Урок 211. 00:02:06
    Module Introduction
  • Урок 212. 00:04:09
    On-Device vs Web Storage
  • Урок 213. 00:08:59
    How to Connect Flutter to a Database
  • Урок 214. 00:04:32
    Preparing Our Backend
  • Урок 215. 00:05:57
    How To Send Http Requests
  • Урок 216. 00:10:56
    Sending POST Requests
  • Урок 217. 00:07:36
    Working with Futures in Dart
  • Урок 218. 00:09:28
    [DART DEEP DIVE] Futures & Async Code
  • Урок 219. 00:07:00
    Showing a Loading Indicator
  • Урок 220. 00:12:12
    Handling Errors Gracefully
  • Урок 221. 00:09:53
    Working with "async" & "await"
  • Урок 222. 00:08:28
    Fetching Data, initState & "of(context)"
  • Урок 223. 00:07:39
    How to Transform Fetched Data
  • Урок 224. 00:04:13
    Implementing Pull-to-Refresh
  • Урок 225. 00:00:53
    Updating Data via PATCH Requests
  • Урок 226. 00:08:08
    Utilizing Optimistic Updating
  • Урок 227. 00:09:06
    Creating Custom Exceptions & More Error Handling
  • Урок 228. 00:01:49
    A Challenge For You!
  • Урок 229. 00:06:39
    Updating the "Favorite" Status Optimistically
  • Урок 230. 00:11:30
    Storing Orders in the Web
  • Урок 231. 00:12:22
    Fetching Orders & Fixing an Issue
  • Урок 232. 00:10:07
    Using the "FutureBuilder" Widget & Improving the Code
  • Урок 233. 00:01:55
    Wrap Up
  • Урок 234. 00:01:45
    Module Introduction
  • Урок 235. 00:05:47
    How Authentication Works
  • Урок 236. 00:03:40
    Prepare Backend
  • Урок 237. 00:15:50
    Adding the Auth Screen
  • Урок 238. 00:13:34
    Adding User Signup
  • Урок 239. 00:06:04
    Allowing Users to Log In
  • Урок 240. 00:13:11
    Handling Authentication Errors
  • Урок 241. 00:11:08
    Managing the Auth Token Locally (in the App)
  • Урок 242. 00:09:04
    Using the "ProxyProvider" and Attaching the Token to Outgoing Http Requests
  • Урок 243. 00:08:32
    Adding the Token to All Requests
  • Урок 244. 00:10:18
    Connecting the "Favorite" Status to Users
  • Урок 245. 00:13:26
    Attaching Products to Users & Filtering By Creator
  • Урок 246. 00:02:56
    Attaching Orders to Users
  • Урок 247. 00:04:19
    Adding a Logout Functionality
  • Урок 248. 00:05:27
    Automatically Logging Users Out (After Some Time)
  • Урок 249. 00:18:20
    Automatically Logging Users In
  • Урок 250. 00:01:37
    Wrap Up
  • Урок 251. 00:01:27
    Module Introduction
  • Урок 252. 00:14:04
    Animations From Scratch (Completely Manually Controlled)
  • Урок 253. 00:03:52
    Using the "AnimatedBuilder" Widget
  • Урок 254. 00:02:48
    Working with the "AnimatedContainer"
  • Урок 255. 00:09:13
    More Built-in Animation & Transition Widgets
  • Урок 256. 00:03:36
    Fading Loaded Images In (And Showing a Placeholder)
  • Урок 257. 00:02:36
    Adding a "Hero" Transition
  • Урок 258. 00:05:56
    Working with Slivers
  • Урок 259. 00:04:01
    Practice: Animating Order Boxes
  • Урок 260. 00:09:51
    Implementing Custom Route Transitions
  • Урок 261. 00:00:54
    Wrap Up
  • Урок 262. 00:01:36
    Module Introduction
  • Урок 263. 00:03:24
    Planning the App
  • Урок 264. 00:12:45
    PlaceList & Place Provider Setup
  • Урок 265. 00:17:17
    Adding the "Add Place" Screen & An Image Input
  • Урок 266. 00:11:02
    Using Image Picker & The Device Camera
  • Урок 267. 00:00:31
    Storing the Image on the Filesystem (on the Device)
  • Урок 268. 00:15:33
    Managing Data & Images via the Provider Package
  • Урок 269. 00:01:24
    Handling Errors
  • Урок 270. 00:04:38
    Testing on Real Devices
  • Урок 271. 00:12:34
    Preparing SQLite
  • Урок 272. 00:11:49
    Storing & Fetching Data with SQLite
  • Урок 273. 00:09:45
    Adding a Location Input & The "location" Package
  • Урок 274. 00:02:30
    Fetching the User Coordinates
  • Урок 275. 00:08:32
    Displaying a Static Map Snapshot
  • Урок 276. 00:13:56
    Rendering a Dynamic Map (via Google Maps)
  • Урок 277. 00:09:44
    Allowing Users to Pick a Location on the Map
  • Урок 278. 00:18:10
    Storing the Location in SQLite
  • Урок 279. 00:11:34
    Adding a "Place Detail" Screen & Opening the Map in "readonly" Mode
  • Урок 280. 00:01:49
    Wrap Up
  • Урок 281. 00:01:31
    Module Introduction
  • Урок 282. 00:08:34
    Sending a Method Call from Flutter
  • Урок 283. 00:15:02
    Running Android Code
  • Урок 284. 00:10:26
    Running iOS Code
  • Урок 285. 00:00:59
    Wrap Up
  • Урок 286. 00:01:43
    Module Introduction
  • Урок 287. 00:00:00
    Preparing the Code
  • Урок 288. 00:05:55
    Preparing the App Configuration
  • Урок 289. 00:01:19
    Preparing Third-Party Services
  • Урок 290. 00:09:08
    Adding Icons & Splash Screens
  • Урок 291. 00:08:47
    Publishing Android Apps
  • Урок 292. 00:06:12
    Publishing iOS Apps
  • Урок 293. 00:01:12
    You did it!
  • Урок 294. 00:03:32
    Your Next Steps (To Become an Awesome Developer!)
  • Урок 295. 00:10:58
    How to Plan & Develop Successful Apps
  • Урок 296. 00:13:49
    What Changed? What's New? Why did I Update the Course?
  • Урок 297. 00:01:15
    Module Introduction
  • Урок 298. 00:04:19
    Creating a New Flutter Project
  • Урок 299. 00:02:20
    Exploring the Default Project Structure
  • Урок 300. 00:02:33
    Diving Into the "main.dart" File
  • Урок 301. 00:02:08
    Widgets in Flutter - Theory
  • Урок 302. 00:04:56
    Creating a Widget
  • Урок 303. 00:04:07
    Adding the "Build" Method
  • Урок 304. 00:06:35
    Adding the Scaffold
  • Урок 305. 00:06:07
    Diving Deeper Into the Syntax
  • Урок 306. 00:06:53
    Adding Cards & Images
  • Урок 307. 00:01:57
    Diving Into the Official Docs
  • Урок 308. 00:03:57
    Adding a Button
  • Урок 309. 00:05:27
    Creating a Stateful Widget
  • Урок 310. 00:05:13
    Managing Data Inside Stateful Widgets
  • Урок 311. 00:03:33
    Adding the Stateful Widget & Lists
  • Урок 312. 00:06:39
    Splitting our Code Up
  • Урок 313. 00:05:49
    Creating the "Product Manager" Widget
  • Урок 314. 00:07:04
    Passing Data to Stateful Widgets
  • Урок 315. 00:09:37
    Understanding Lifecycle Hooks
  • Урок 316. 00:04:46
    Diving Into Google's Material Design
  • Урок 317. 00:05:46
    Understanding Additional Dart Features
  • Урок 318. 00:08:53
    Passing Data Up
  • Урок 319. 00:06:07
    Understanding "const" & "final"
  • Урок 320. 00:00:00
    Wrap Up
  • Урок 321. 00:00:40
    Module Introduction
  • Урок 322. 00:04:40
    Fixing Syntax Errors
  • Урок 323. 00:04:18
    Understanding Runtime Errors & Runtime Messages
  • Урок 324. 00:03:46
    Dealing with Logical Errors
  • Урок 325. 00:04:54
    Using Breakpoints
  • Урок 326. 00:00:00
    Debugging the User Interface
  • Урок 327. 00:02:29
    More About Visual Helpers
  • Урок 328. 00:03:06
    Wrap Up
  • Урок 329. 00:01:20
    Testing Devices
  • Урок 330. 00:02:42
    How to Start the App
  • Урок 331. 00:00:00
    Testing a Real Android Device
  • Урок 332. 00:06:08
    Using the iOS Emulator & a Real Device
  • Урок 333. 00:01:46
    Using the Native IDE Consoles
  • Урок 334. 00:00:58
    Module Introduction
  • Урок 335. 00:04:26
    Creating Scrollable Lists with "ListView"
  • Урок 336. 00:06:47
    Optimizing the List Loading Behaviour
  • Урок 337. 00:05:14
    Rendering Content Conditionally
  • Урок 338. 00:05:40
    Alternative Approaches to Render Content Conditionally
  • Урок 339. 00:01:48
    One Important Gotcha
  • Урок 340. 00:01:53
    Wrap Up
  • Урок 341. 00:01:09
    Module Introduction
  • Урок 342. 00:03:41
    Adding Multiple Pages to our App
  • Урок 343. 00:03:15
    Adding Buttons
  • Урок 344. 00:07:33
    Implementing a Basic Navigation
  • Урок 345. 00:04:55
    Improving the Look of the Product Page
  • Урок 346. 00:08:13
    Passing Data Around ("Pushing" the Page)
  • Урок 347. 00:07:10
    Passing Information Back ("Popping" the Page)
  • Урок 348. 00:06:06
    Adding Reactions Upon Button Pressing
  • Урок 349. 00:04:42
    Adding the Basic Authentication Page & Replacing Routes
  • Урок 350. 00:04:22
    Adding the Sidedrawer & the Hamburger Icon
  • Урок 351. 00:01:41
    Understanding Stack Based Navigation
  • Урок 352. 00:07:26
    Adding Tabs
  • Урок 353. 00:01:40
    Finishing the Tab Navigation
  • Урок 354. 00:05:52
    Adding Named Routes
  • Урок 355. 00:06:40
    Parsing Route Data Manually
  • Урок 356. 00:00:00
    Lifting State Up
  • Урок 357. 00:04:50
    Using the Named Routes
  • Урок 358. 00:02:58
    Working with "onUnknownRoute" as Fallback
  • Урок 359. 00:06:26
    Adding Alert Dialogs
  • Урок 360. 00:02:54
    Showing a Modal
  • Урок 361. 00:03:45
    Wrap Up
  • Урок 362. 00:00:54
    Module Introduction
  • Урок 363. 00:07:12
    Saving User Input
  • Урок 364. 00:03:46
    Configuring Text Fields
  • Урок 365. 00:00:00
    Styling Text Fields
  • Урок 366. 00:03:06
    Fixing a Bug & Adding a Button
  • Урок 367. 00:09:24
    Using our Form to Create a New Product
  • Урок 368. 00:04:14
    Improving the Style of our Form
  • Урок 369. 00:01:37
    Fixing a Tiny "Error"
  • Урок 370. 00:04:44
    Adding a Switch
  • Урок 371. 00:01:43
    Wrap Up
  • Урок 372. 00:00:55
    Module Introduction
  • Урок 373. 00:00:00
    Exploring the Widget Catalogue
  • Урок 374. 00:08:47
    There's More Than One Widget For The Job
  • Урок 375. 00:06:48
    Working with Text & Fonts
  • Урок 376. 00:06:34
    Working with Rows
  • Урок 377. 00:07:58
    Decorating Boxes & Styling a Price Tag
  • Урок 378. 00:06:31
    Setting Borders
  • Урок 379. 00:08:52
    Understanding "Expanded" & "Flexible"
  • Урок 380. 00:08:01
    Adding a Background Image
  • Урок 381. 00:04:05
    Centering Input Fields
  • Урок 382. 00:03:44
    Adding Icons to our Sidemenu
  • Урок 383. 00:05:18
    Adding Icon Buttons
  • Урок 384. 00:00:00
    Outsourcing Code into Separate Widgets
  • Урок 385. 00:04:17
    Refactoring our Code
  • Урок 386. 00:04:45
    Creating a Standardized Tile Widget
  • Урок 387. 00:04:23
    Adding Separate Methods for Specific Widgets
  • Урок 388. 00:07:02
    Optimizing our Project
  • Урок 389. 00:03:04
    Responsive Design Problems
  • Урок 390. 00:06:37
    Adding Media Queries
  • Урок 391. 00:03:12
    Understanding Media Queries with ListView
  • Урок 392. 00:03:36
    Working with Themes
  • Урок 393. 00:03:09
    Listening to Touch Events with the Gesture Detector
  • Урок 394. 00:03:56
    Wrap Up
  • Урок 395. 00:00:58
    Module Introduction
  • Урок 396. 00:07:26
    Using the Form Widget
  • Урок 397. 00:06:11
    Adding Form Validation
  • Урок 398. 00:04:15
    Advanced Validation
  • Урок 399. 00:03:17
    Closing the Keyboard
  • Урок 400. 00:04:07
    Submitting Data
  • Урок 401. 00:06:06
    Outputting Lists of Products
  • Урок 402. 00:04:16
    Re-Using the Product Create Form
  • Урок 403. 00:05:39
    Setting Initial Values
  • Урок 404. 00:05:19
    Updating Products
  • Урок 405. 00:07:34
    Ensuring Input Visibility
  • Урок 406. 00:01:33
    Wrap Up
  • Урок 407. 00:00:41
    Module Introduction
  • Урок 408. 00:04:43
    Improving the List Tile
  • Урок 409. 00:04:48
    Adding the Dismissible Widget
  • Урок 410. 00:05:13
    Deleting Products Upon Swipe
  • Урок 411. 00:04:06
    Restructuring the Code & Wrap Up
  • Урок 412. 00:00:44
    Module Introduction
  • Урок 413. 00:00:00
    What can be Improved?
  • Урок 414. 00:12:03
    Adding a Product Model
  • Урок 415. 00:09:30
    Creating a Scoped Model
  • Урок 416. 00:11:00
    Connecting the Scoped Model
  • Урок 417. 00:05:20
    Providing the Scoped Model
  • Урок 418. 00:05:31
    Viewing Single Products
  • Урок 419. 00:00:00
    Editing & Deleting Products with the Scoped Model
  • Урок 420. 00:02:48
    Finishing the Product Model
  • Урок 421. 00:04:12
    A Note on Immutability
  • Урок 422. 00:05:41
    Creating the Toggle Favorite Method
  • Урок 423. 00:04:42
    Working on the Favorite Feature
  • Урок 424. 00:03:39
    Adding "notifylisteners"
  • Урок 425. 00:09:40
    Finishing the Favorite Feature
  • Урок 426. 00:05:44
    Adding a User Model
  • Урок 427. 00:05:50
    Using Mixins to Merge Models
  • Урок 428. 00:03:05
    Logging in with the Main & the User Model
  • Урок 429. 00:14:43
    Connecting Models & Sharing Data
  • Урок 430. 00:08:57
    Improving the Code & Fixing an Error
  • Урок 431. 00:04:35
    Wrap Up
  • Урок 432. 00:01:44
    Module Introduction
  • Урок 433. 00:03:23
    Understanding the Backend Setup
  • Урок 434. 00:09:48
    Sending a POST Request
  • Урок 435. 00:06:23
    Using the Response
  • Урок 436. 00:05:37
    Getting Data From a Server
  • Урок 437. 00:11:02
    Transforming & Extracting Response Data
  • Урок 438. 00:07:58
    Displaying a Loading Spinner
  • Урок 439. 00:08:12
    Finishing the Loading Spinner
  • Урок 440. 00:10:54
    Updating Products
  • Урок 441. 00:05:17
    Deleting Products
  • Урок 442. 00:03:59
    Using Pull to Refresh
  • Урок 443. 00:04:13
    Adding "fadein" to the Image Placeholder
  • Урок 444. 00:18:25
    Adjusting the Scoped Model & the Selected Product
  • Урок 445. 00:01:46
    Fixing the Product Selection
  • Урок 446. 00:00:00
    Handling Error Responses
  • Урок 447. 00:04:18
    Generic Error Handling
  • Урок 448. 00:05:02
    Adding "async" "await"
  • Урок 449. 00:04:24
    Improving our Code
  • Урок 450. 00:02:47
    Wrap Up
  • Урок 451. 00:00:53
    Module Introduction
  • Урок 452. 00:03:56
    How Authentication Works
  • Урок 453. 00:10:46
    Adding a "Confirm Password" Textfield
  • Урок 454. 00:12:08
    Implementing the Signup Functionality
  • Урок 455. 00:08:21
    Handling Errors
  • Урок 456. 00:02:14
    Adding a Spinner Whilst Signing Up
  • Урок 457. 00:07:11
    Adding the Signin Functionality
  • Урок 458. 00:05:16
    Refactoring our Code
  • Урок 459. 00:09:11
    Authenticating Requests with Tokens
  • Урок 460. 00:07:22
    Storing the Token on the Device
  • Урок 461. 00:05:31
    Signing Users In Automatically
  • Урок 462. 00:08:06
    Adding a Logout Button
  • Урок 463. 00:11:06
    Adding Autologout
  • Урок 464. 00:14:54
    Route Protection & Redirection
  • Урок 465. 00:02:19
    Fixing the Manual Logout
  • Урок 466. 00:05:02
    Time for a Quick Recap Regarding our Code Structure
  • Урок 467. 00:10:00
    Adding Optimistic Updating to Store the Favorite Status
  • Урок 468. 00:05:17
    Fetching the Favorite Status
  • Урок 469. 00:06:49
    Allow Editing for own Posts Only
  • Урок 470. 00:00:00
    Wrap Up
  • Урок 471. 00:00:59
    Module Introduction
  • Урок 472. 00:05:38
    Unlocking the Required APIs
  • Урок 473. 00:07:27
    Requesting Permissions
  • Урок 474. 00:08:00
    Preparing our Text Form Field
  • Урок 475. 00:09:05
    Adding a Static Dummy Map
  • Урок 476. 00:09:06
    Sending a Request to Convert an Address to Coordinates
  • Урок 477. 00:05:12
    Adding Geocoding & Maps with Real Coordinates
  • Урок 478. 00:05:31
    Working on the Map Control
  • Урок 479. 00:05:53
    Storing Location Data in the Database
  • Урок 480. 00:01:55
    Fixing a Bug
  • Урок 481. 00:07:27
    Loading Location Data from the Backend
  • Урок 482. 00:14:08
    Updating an Existing Product's Position
  • Урок 483. 00:02:16
    Adding the Update Method for the Location
  • Урок 484. 00:03:32
    Adding the Location Package
  • Урок 485. 00:14:48
    Getting the User Location
  • Урок 486. 00:03:12
    Preventing Memory Leaks
  • Урок 487. 00:01:46
    Displaying the Address
  • Урок 488. 00:11:13
    Showing a Fullscreen Map
  • Урок 489. 00:03:08
    Wrap Up
  • Урок 490. 00:00:56
    Module Introduction
  • Урок 491. 00:08:54
    Adding an Image Picker Button
  • Урок 492. 00:07:34
    Adding the "Use Camera" & "Gallery" Buttons
  • Урок 493. 00:07:54
    Connecting the "Choose" Buttons to the Image Picker
  • Урок 494. 00:05:13
    Adding an Image Preview
  • Урок 495. 00:04:33
    Adding Text Editing Controllers
  • Урок 496. 00:07:04
    Setting Up Firebase Cloud Functions
  • Урок 497. 00:08:59
    Adding Server Side Code
  • Урок 498. 00:07:55
    Reading Incoming Files & Fields
  • Урок 499. 00:14:12
    Storing Data and Move it to a Temporary Storage
  • Урок 500. 00:06:31
    Deploying our Firebase Cloud Function
  • Урок 501. 00:09:38
    Configuring the Upload Request
  • Урок 502. 00:07:55
    Setting Headers to Add the Token
  • Урок 503. 00:03:31
    Fixing an Error
  • Урок 504. 00:03:40
    Fetching & Using Images
  • Урок 505. 00:06:26
    Previewing & Editing the Image
  • Урок 506. 00:06:07
    Adding the Image Upload Flow
  • Урок 507. 00:00:00
    Deleting Images When Deleting a Product
  • Урок 508. 00:02:05
    Wrap Up
  • Урок 509. 00:00:00
    Module Introduction
  • Урок 510. 00:10:48
    Adding Floating Action Buttons (FABs)
  • Урок 511. 00:05:41
    Adding Functionality to our Favorite Button
  • Урок 512. 00:04:43
    Working on the Contact Button
  • Урок 513. 00:09:41
    Animating the Contact Icon
  • Урок 514. 00:02:02
    Animating the Favorite Icon
  • Урок 515. 00:05:33
    Animating the Options Button
  • Урок 516. 00:00:00
    Fading the Password Field In & Out
  • Урок 517. 00:05:45
    Sliding the Password Field In & Out
  • Урок 518. 00:00:00
    Adding Hero Widgets
  • Урок 519. 00:05:56
    Adding the Sliver Effect
  • Урок 520. 00:07:16
    Adding Route Transitions
  • Урок 521. 00:02:29
    Wrap Up
  • Урок 522. 00:00:27
    Module Introduction
  • Урок 523. 00:01:54
    Fixing an Autologout Bug
  • Урок 524. 00:09:42
    Fixing the Price Input in Landscape Mode
  • Урок 525. 00:01:52
    Fixing the Filtered Product Index
  • Урок 526. 00:00:00
    Fixing the Product Title Style & the Favorite Product Selection
  • Урок 527. 00:02:10
    Clearing All Products Before Fetching
  • Урок 528. 00:04:49
    Testing the iPhone & Fixing the Product Reset Logic
  • Урок 529. 00:01:03
    Adding Space on the Product Card
  • Урок 530. 00:02:05
    Using Flutter Analyze
  • Урок 531. 00:00:00
    Possible Code Restructurings
  • Урок 532. 00:03:00
    Managing Global Values
  • Урок 533. 00:00:00
    Testing the App on an Android Device
  • Урок 534. 00:06:22
    Testing the App on an iPhone & Fixing the European Decimal Comma
  • Урок 535. 00:00:58
    Module Introduction
  • Урок 536. 00:03:10
    Understanding Material Design & Cupertino
  • Урок 537. 00:04:42
    Detecting the Platform
  • Урок 538. 00:03:11
    Using Platform Specific Widgets
  • Урок 539. 00:00:00
    Adding a Platform Specific Theme
  • Урок 540. 00:01:06
    When Should we Use Platform Specific Themes?
  • Урок 541. 00:02:17
    Wrap Up