Этот материал находится в платной подписке. Оформи премиум подписку и смотри Flutter & Dart - The Complete Guide [2021 Edition], а также все другие курсы, прямо сейчас!
Премиум
  • Урок 1. 00:01:49
    Introduction
  • Урок 2. 00:05:55
    What is Flutter?
  • Урок 3. 00:04:48
    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:25:08
    Flutter macOS Setup
  • Урок 7. 00:18:12
    macOS Development Environment
  • Урок 8. 00:20:42
    Flutter Windows Setup
  • Урок 9. 00:17:08
    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:05:18
    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:04
    Building an App From Scratch
  • Урок 21. 00:03:26
    Running the App on an Emulator
  • Урок 22. 00:08:37
    Class Constructors & Named Arguments
  • Урок 23. 00:08:12
    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:08:48
    Adding Layout Widgets
  • Урок 27. 00:07:31
    Connecting Functions & Buttons
  • Урок 28. 00:03:21
    Anonymous Functions
  • Урок 29. 00:06:38
    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:18
    Using Private Properties
  • Урок 33. 00:11:51
    Creating a New, Custom Widget
  • Урок 34. 00:08:02
    First Styling & Layouting Steps
  • Урок 35. 00:04:08
    Enums & Multiple Constructors
  • Урок 36. 00:02:40
    Official Docs & The Widget Catalog
  • Урок 37. 00:10:39
    Passing Callback Functions Around
  • Урок 38. 00:05:54
    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:12:31
    [DART DEEP DIVE] The "null" Value & Null Safety
  • Урок 44. 00:02:22
    Outputting Widgets Conditionally
  • Урок 45. 00:10:38
    Splitting the App Into Widgets
  • Урок 46. 00:09:04
    Calculating a Total Score
  • Урок 47. 00:06:35
    Getters & "else-if"
  • Урок 48. 00:05:18
    Resetting the Quiz
  • Урок 49. 00:14:12
    "Old" Button Widgets vs "New" Button Widgets
  • Урок 50. 00:01:54
    Wrap Up
  • Урок 51. 00:02:01
    Module Introduction
  • Урок 52. 00:03:57
    Running the App on a Real Android Device
  • Урок 53. 00:05:55
    Running the App on an iOS Emulator
  • Урок 54. 00:01:53
    Running the App on a Real iOS Device
  • Урок 55. 00:02:26
    Working with the Emulators / Using the Emulators
  • Урок 56. 00:05:28
    Understanding Error Messages & Fixing Errors
  • Урок 57. 00:06:22
    Using the Debugger
  • Урок 58. 00:04:55
    Getting Started with the Dart DevTools
  • Урок 59. 00:03:24
    Understanding the Repaint Rainbow
  • Урок 60. 00:01:35
    Wrapping up the Dart DevTools
  • Урок 61. 00:03:20
    Module Introduction
  • Урок 62. 00:09:43
    An Overview of the Core Flutter Widgets
  • Урок 63. 00:02:44
    Planning the App
  • Урок 64. 00:09:19
    Combining Widgets
  • Урок 65. 00:06:12
    Understanding Column Alignment
  • Урок 66. 00:08:29
    Not a Widget: Adding a Transaction Model & Transaction Data
  • Урок 67. 00:03:40
    Mapping Data Into Widgets
  • Урок 68. 00:05:27
    Building a Custom List Item
  • Урок 69. 00:05:13
    Styling a Container
  • Урок 70. 00:02:47
    Styling Text
  • Урок 71. 00:01:56
    More Styling!
  • Урок 72. 00:03:39
    Containers vs Columns vs Rows
  • Урок 73. 00:05:22
    Using String Interpolation
  • Урок 74. 00:07:30
    Installing External Packages & Formatting Dates
  • Урок 75. 00:09:42
    Adding Text Input Widgets (TextField)
  • Урок 76. 00:09:30
    Fetching User Input
  • Урок 77. 00:12:46
    Splitting the App Into Widgets
  • Урок 78. 00:06:34
    Connecting Widgets & Managing Data / State
  • Урок 79. 00:03:59
    Adding User Transactions to the List
  • Урок 80. 00:06:12
    Making the List Scrollable!
  • Урок 81. 00:12:03
    Working with ListViews
  • Урок 82. 00:08:29
    Further Input & Output Styling and Configuration
  • Урок 83. 00:04:33
    Adding AppBar Buttons & Floating Action Buttons
  • Урок 84. 00:09:34
    Showing a Modal Bottom Sheet
  • Урок 85. 00:06:31
    Improving & Styling the Modal Bottom Sheet
  • Урок 86. 00:08:43
    Configuring & Using Themes
  • Урок 87. 00:11:08
    Custom Fonts & Working with Text Themes
  • Урок 88. 00:07:58
    Adding Images to the App
  • Урок 89. 00:04:24
    Planning the Chart Widget
  • Урок 90. 00:13:48
    Looping Through Lists
  • Урок 91. 00:07:25
    Deriving Recent Transactions
  • Урок 92. 00:11:00
    Creating Bars for our Chart
  • Урок 93. 00:06:20
    Populating the Chart with Values
  • Урок 94. 00:05:27
    Finishing the Chart Bars
  • Урок 95. 00:10:24
    Flexible & Expanded: Deep Dive
  • Урок 96. 00:05:30
    Adding a ListTile Widget
  • Урок 97. 00:03:09
    Improving the Overall Chart
  • Урок 98. 00:05:08
    Widgets & Configuring Widgets - Summary / Overview
  • Урок 99. 00:05:20
    Getting Started with Date Selection
  • Урок 100. 00:11:14
    Showing a DatePicker
  • Урок 101. 00:03:08
    Adding Transactions with a Date
  • Урок 102. 00:07:03
    Deleting Transactions & Using IconButtons
  • Урок 103. 00:05:35
    Final Polishing!
  • Урок 104. 00:03:55
    Wrap Up
  • Урок 105. 00:01:38
    Module Introduction
  • Урок 106. 00:05:56
    What does "Responsive" and "Adaptive" Mean?
  • Урок 107. 00:03:05
    Examples: Where we could improve the App!
  • Урок 108. 00:09:14
    Calculating Sizes Dynamically
  • Урок 109. 00:07:45
    Using the LayoutBuilder Widget
  • Урок 110. 00:04:20
    Controlling the Device Orientation
  • Урок 111. 00:04:43
    Rendering Alternative Landscape Content - 1
  • Урок 112. 00:02:59
    Finishing Landscape Mode
  • Урок 113. 00:05:34
    Showing Different Content Based on Device Orientation
  • Урок 114. 00:03:44
    Respecting the Softkeyboard Insets
  • Урок 115. 00:04:11
    Using the Device Size in Conditions
  • Урок 116. 00:02:07
    Managing the MediaQuery Object
  • Урок 117. 00:05:37
    Checking the Device Platform
  • Урок 118. 00:09:06
    Using Cupertino (iOS) Widgets
  • Урок 119. 00:01:44
    Using the SafeArea
  • Урок 120. 00:03:10
    More Cupertino Styles
  • Урок 121. 00:03:12
    Using Cupertino Buttons
  • Урок 122. 00:05:05
    Creating Custom Adaptive Widgets
  • Урок 123. 00:01:44
    Wrap Up
  • Урок 124. 00:02:33
    Module Introduction
  • Урок 125. 00:03:14
    The Problem At Hand
  • Урок 126. 00:10:46
    Widget Tree & Element Tree - What, Why and How?
  • Урок 127. 00:08:49
    How Flutter Rebuilds & Repaints the Screen
  • Урок 128. 00:09:19
    How Flutter Executes build()
  • Урок 129. 00:11:17
    Using "const" Widgets & Constructors
  • Урок 130. 00:03:58
    Writing Good Code
  • Урок 131. 00:06:08
    Extracting Widgets
  • Урок 132. 00:10:23
    Using Builder Methods
  • Урок 133. 00:12:56
    Understanding the Widget Lifecycle
  • Урок 134. 00:09:27
    Understanding the App Lifecycle
  • Урок 135. 00:06:47
    Understanding Context
  • Урок 136. 00:05:35
    A Problem with Lists & Stateful Widgets
  • Урок 137. 00:05:10
    Understanding the Problem Root
  • Урок 138. 00:11:16
    Using Keys
  • Урок 139. 00:01:42
    Wrap Up
  • Урок 140. 00:02:24
    Module Introduction
  • Урок 141. 00:04:46
    Planning the App
  • Урок 142. 00:11:19
    Starting With The App - Adding Base Data
  • Урок 143. 00:07:50
    Creating a Grid & Working with Linear Gradients
  • Урок 144. 00:03:12
    Registering a Screen as the Main Screen
  • Урок 145. 00:07:05
    Styling & Theming
  • Урок 146. 00:10:11
    Navigating to a New Page
  • Урок 147. 00:02:40
    Passing Data via the Constructor
  • Урок 148. 00:06:43
    Using Named Routes & Passing Data With Named Routes
  • Урок 149. 00:02:47
    Diving Deeper into Named Routes
  • Урок 150. 00:12:45
    Adding a Meal Model & Data
  • Урок 151. 00:04:57
    Selecting Meals for a Chosen Category
  • Урок 152. 00:15:00
    Displaying Recipe Items & Using Network Images
  • Урок 153. 00:15:22
    Finishing the Meal List Item
  • Урок 154. 00:07:18
    Navigating to the Meal Detail Page
  • Урок 155. 00:05:28
    onGenerateRoute & onUnknownRoute
  • Урок 156. 00:17:35
    Finishing the Meal Detail Page
  • Урок 157. 00:10:27
    Adding a TabBar to the Appbar
  • Урок 158. 00:13:13
    Adding a Bottom TabBar
  • Урок 159. 00:12:38
    Adding a Custom Drawer
  • Урок 160. 00:04:04
    Adding Links to the Drawer
  • Урок 161. 00:04:22
    Replacing Pages (Instead of Pushing)
  • Урок 162. 00:17:07
    Popping Pages & Passing Data Back
  • Урок 163. 00:08:32
    Adding Filter Switches
  • Урок 164. 00:16:20
    Adding Filtering Logic
  • Урок 165. 00:19:59
    Adding a "Mark as Favorite" Feature
  • Урок 166. 00:02:41
    A Problem!
  • Урок 167. 00:02:56
    Wrap Up
  • Урок 168. 00:02:14
    Module Introduction
  • Урок 169. 00:06:56
    Planning the App
  • Урок 170. 00:06:33
    Defining a Data Model
  • Урок 171. 00:16:25
    Working on the "Products" Grid & Item Widgets
  • Урок 172. 00:05:15
    Styling & Theming the App
  • Урок 173. 00:10:31
    Adding Navigation to the App
  • Урок 174. 00:06:30
    Why State Management? And what is "State" and "State Management"?
  • Урок 175. 00:02:56
    Understanding the "Provider" Package & Approach
  • Урок 176. 00:21:10
    Working with Providers & Listeners
  • Урок 177. 00:06:24
    [DART DEEP DIVE] Inheritance ("extends") vs Mixins ("with")
  • Урок 178. 00:05:59
    Listening in Different Places & Ways
  • Урок 179. 00:14:04
    Using Nested Models & Providers
  • Урок 180. 00:06:56
    Exploring Alternative Provider Syntaxes
  • Урок 181. 00:07:26
    Using "Consumer" instead of "Provider.of"
  • Урок 182. 00:15:41
    Local State vs App-wide State
  • Урок 183. 00:08:40
    Adding Shopping Cart Data
  • Урок 184. 00:03:42
    Working with Multiple Providers
  • Урок 185. 00:11:32
    Connecting the Cart Provider
  • Урок 186. 00:11:38
    Working on the Shopping Cart & Displaying a Total
  • Урок 187. 00:11:18
    Displaying a List of Cart Items
  • Урок 188. 00:08:48
    Making Cart Items Dismissible
  • Урок 189. 00:04:50
    Adding Product Detail Data
  • Урок 190. 00:07:45
    Providing an Orders Object
  • Урок 191. 00:02:49
    Adding Orders
  • Урок 192. 00:08:12
    Adding an Orders Screen
  • Урок 193. 00:05:46
    Using a Side Drawer
  • Урок 194. 00:10:30
    Making Orders Expandable & Stateful Widgets vs Providers
  • Урок 195. 00:03:31
    Wrap Up
  • Урок 196. 00:03:03
    Module Introduction
  • Урок 197. 00:10:31
    Snackbars & Undoing "Add to Cart" Actions
  • Урок 198. 00:07:13
    Showing Alert Dialogs
  • Урок 199. 00:14:16
    Adding a "Manage Products" Page
  • Урок 200. 00:05:07
    "Edit Product" Screen & A Problem
  • Урок 201. 00:08:00
    Using Forms & Working with Form Inputs
  • Урок 202. 00:04:36
    Managing Form Input Focus
  • Урок 203. 00:04:12
    Multiline Inputs & Disposing Objects
  • Урок 204. 00:13:16
    Image Input & Image Preview
  • Урок 205. 00:12:02
    Submitting Forms
  • Урок 206. 00:04:15
    Validating User Input
  • Урок 207. 00:09:51
    Adding Validation to All Inputs
  • Урок 208. 00:03:53
    Saving New Products
  • Урок 209. 00:16:20
    Time to Update Products!
  • Урок 210. 00:03:40
    Allowing Users to Delete Products
  • Урок 211. 00:00:54
    Wrap Up
  • Урок 212. 00:02:06
    Module Introduction
  • Урок 213. 00:04:09
    On-Device vs Web Storage
  • Урок 214. 00:03:37
    How to Connect Flutter to a Database
  • Урок 215. 00:04:32
    Preparing Our Backend
  • Урок 216. 00:05:57
    How To Send Http Requests
  • Урок 217. 00:10:56
    Sending POST Requests
  • Урок 218. 00:07:36
    Working with Futures in Dart
  • Урок 219. 00:09:28
    [DART DEEP DIVE] Futures & Async Code
  • Урок 220. 00:07:00
    Showing a Loading Indicator
  • Урок 221. 00:12:12
    Handling Errors Gracefully
  • Урок 222. 00:09:53
    Working with "async" & "await"
  • Урок 223. 00:08:29
    Fetching Data, initState & "of(context)"
  • Урок 224. 00:07:39
    How to Transform Fetched Data
  • Урок 225. 00:04:58
    Implementing Pull-to-Refresh
  • Урок 226. 00:06:37
    Updating Data via PATCH Requests
  • Урок 227. 00:08:08
    Utilizing Optimistic Updating
  • Урок 228. 00:09:06
    Creating Custom Exceptions & More Error Handling
  • Урок 229. 00:01:49
    A Challenge For You!
  • Урок 230. 00:06:40
    Updating the "Favorite" Status Optimistically
  • Урок 231. 00:11:30
    Storing Orders in the Web
  • Урок 232. 00:12:23
    Fetching Orders & Fixing an Issue
  • Урок 233. 00:13:48
    Using the "FutureBuilder" Widget & Improving the Code
  • Урок 234. 00:01:55
    Wrap Up
  • Урок 235. 00:01:45
    Module Introduction
  • Урок 236. 00:05:47
    How Authentication Works
  • Урок 237. 00:03:40
    Prepare Backend
  • Урок 238. 00:15:50
    Adding the Auth Screen
  • Урок 239. 00:13:34
    Adding User Signup
  • Урок 240. 00:06:04
    Allowing Users to Log In
  • Урок 241. 00:13:11
    Handling Authentication Errors
  • Урок 242. 00:11:08
    Managing the Auth Token Locally (in the App)
  • Урок 243. 00:09:50
    Using the "ProxyProvider" and Attaching the Token to Outgoing Http Requests
  • Урок 244. 00:08:32
    Adding the Token to All Requests
  • Урок 245. 00:10:19
    Connecting the "Favorite" Status to Users
  • Урок 246. 00:13:26
    Attaching Products to Users & Filtering By Creator
  • Урок 247. 00:02:56
    Attaching Orders to Users
  • Урок 248. 00:04:19
    Adding a Logout Functionality
  • Урок 249. 00:05:27
    Automatically Logging Users Out (After Some Time)
  • Урок 250. 00:18:20
    Automatically Logging Users In
  • Урок 251. 00:01:37
    Wrap Up
  • Урок 252. 00:01:27
    Module Introduction
  • Урок 253. 00:14:04
    Animations From Scratch (Completely Manually Controlled)
  • Урок 254. 00:03:52
    Using the "AnimatedBuilder" Widget
  • Урок 255. 00:02:48
    Working with the "AnimatedContainer"
  • Урок 256. 00:09:13
    More Built-in Animation & Transition Widgets
  • Урок 257. 00:03:36
    Fading Loaded Images In (And Showing a Placeholder)
  • Урок 258. 00:02:36
    Adding a "Hero" Transition
  • Урок 259. 00:05:56
    Working with Slivers
  • Урок 260. 00:04:01
    Practice: Animating Order Boxes
  • Урок 261. 00:09:51
    Implementing Custom Route Transitions
  • Урок 262. 00:00:54
    Wrap Up
  • Урок 263. 00:01:36
    Module Introduction
  • Урок 264. 00:03:25
    Planning the App
  • Урок 265. 00:12:45
    PlaceList & Place Provider Setup
  • Урок 266. 00:17:17
    Adding the "Add Place" Screen & An Image Input
  • Урок 267. 00:12:12
    Using Image Picker & The Device Camera
  • Урок 268. 00:10:16
    Storing the Image on the Filesystem (on the Device)
  • Урок 269. 00:15:33
    Managing Data & Images via the Provider Package
  • Урок 270. 00:01:24
    Handling Errors
  • Урок 271. 00:04:38
    Testing on Real Devices
  • Урок 272. 00:12:34
    Preparing SQLite
  • Урок 273. 00:11:49
    Storing & Fetching Data with SQLite
  • Урок 274. 00:09:45
    Adding a Location Input & The "location" Package
  • Урок 275. 00:02:30
    Fetching the User Coordinates
  • Урок 276. 00:08:32
    Displaying a Static Map Snapshot
  • Урок 277. 00:13:56
    Rendering a Dynamic Map (via Google Maps)
  • Урок 278. 00:09:44
    Allowing Users to Pick a Location on the Map
  • Урок 279. 00:18:10
    Storing the Location in SQLite
  • Урок 280. 00:11:34
    Adding a "Place Detail" Screen & Opening the Map in "readonly" Mode
  • Урок 281. 00:01:49
    Wrap Up
  • Урок 282. 00:01:52
    Module Introduction
  • Урок 283. 00:04:13
    What is Firebase?
  • Урок 284. 00:04:38
    Creating a New App
  • Урок 285. 00:10:57
    Getting Started with Firebase
  • Урок 286. 00:16:23
    Getting Started with Flutter & the Firebase SDK
  • Урок 287. 00:06:27
    Rendering Stream Data with StreamBuilder
  • Урок 288. 00:02:40
    Adding Data
  • Урок 289. 00:10:26
    A Basic Authentication Screen
  • Урок 290. 00:03:40
    Adding an App Theme
  • Урок 291. 00:14:03
    Creating an Authentication Form
  • Урок 292. 00:04:59
    Connecting Auth Form & Auth Screen
  • Урок 293. 00:13:16
    Implementing Authentication
  • Урок 294. 00:06:58
    Storing Extra User Data
  • Урок 295. 00:07:34
    Finishing Authentication & Logout
  • Урок 296. 00:09:45
    Adding Firebase Security Rules
  • Урок 297. 00:05:12
    Listening to Chat Messages
  • Урок 298. 00:11:57
    Sending & Ordering Chat Messages
  • Урок 299. 00:06:05
    Creating a Basic Chat Bubble Widget
  • Урок 300. 00:12:30
    Improving the Chat Bubbles
  • Урок 301. 00:04:24
    Testing on Multiple Devices
  • Урок 302. 00:11:37
    Displaying User Names
  • Урок 303. 00:13:55
    Adding an Image Picker
  • Урок 304. 00:07:12
    Preparing File Upload & Validating Images
  • Урок 305. 00:10:56
    Uploading Images
  • Урок 306. 00:05:14
    Improving Image Upload
  • Урок 307. 00:02:15
    Running on a Real iOS Device
  • Урок 308. 00:11:09
    Displaying User Images
  • Урок 309. 00:05:42
    How Push Notifications Work
  • Урок 310. 00:04:27
    An Introduction to Firebase Cloud Messaging
  • Урок 311. 00:09:45
    Android & Push Notifications
  • Урок 312. 00:13:42
    iOS & Push Notifications
  • Урок 313. 00:10:05
    Handling Push Notifications
  • Урок 314. 00:06:25
    Getting Started with Firebase Cloud Functions
  • Урок 315. 00:08:51
    Setting a Firestore Trigger
  • Урок 316. 00:08:47
    Sending Automated Push Notifications
  • Урок 317. 00:07:16
    Polishing & Wrap Up
  • Урок 318. 00:01:31
    Module Introduction
  • Урок 319. 00:08:34
    Sending a Method Call from Flutter
  • Урок 320. 00:15:02
    Running Android Code
  • Урок 321. 00:10:26
    Running iOS Code
  • Урок 322. 00:00:59
    Wrap Up
  • Урок 323. 00:01:43
    Module Introduction
  • Урок 324. 00:02:25
    Preparing the Code
  • Урок 325. 00:05:55
    Preparing the App Configuration
  • Урок 326. 00:01:19
    Preparing Third-Party Services
  • Урок 327. 00:09:08
    Adding Icons & Splash Screens
  • Урок 328. 00:08:47
    Publishing Android Apps
  • Урок 329. 00:06:12
    Publishing iOS Apps
  • Урок 330. 00:01:12
    You did it!
  • Урок 331. 00:03:32
    Your Next Steps (To Become an Awesome Developer!)
  • Урок 332. 00:10:59
    How to Plan & Develop Successful Apps
  • Урок 333. 00:10:02
    Flutter 2 - What's New? What's The Impact On This Course?
  • Урок 334. 00:12:53
    "Old" vs "New" Button Widgets