Этот материал находится в платной подписке. Оформи премиум подписку и смотри или слушай Flutter Developer Bootcamp, а также все другие курсы, прямо сейчас!
Премиум
  • Урок 1. 00:07:59
    Windows Flutter Install
  • Урок 2. 00:05:07
    Windows Android Setup
  • Урок 3. 00:06:40
    MacOS Flutter Install
  • Урок 4. 00:08:53
    MacOS iOS Android Setup
  • Урок 5. 00:13:58
    Turning VS Code Into a Flutter IDE
  • Урок 6. 00:03:03
    (Optional) Configuring VS Code to Look Exactly Like Mine
  • Урок 7. 00:02:04
    Flutter-Specific VS Code Settings
  • Урок 8. 00:06:08
    Dart Module Introduction
  • Урок 9. 00:14:15
    Variables and Primitive Types
  • Урок 10. 00:06:54
    Non-Nullability
  • Урок 11. 00:10:12
    Operators
  • Урок 12. 00:06:07
    Control Flow - If and Switch
  • Урок 13. 00:05:22
    Control Flow - Loops
  • Урок 14. 00:05:17
    Functions - Basics
  • Урок 15. 00:10:31
    Functions - Parameters
  • Урок 16. 00:12:51
    Functions - Higher Order
  • Урок 17. 00:09:14
    Collections - Basics
  • Урок 18. 00:07:51
    Collections - Transformations
  • Урок 19. 00:05:02
    Collections - If, For, Spread
  • Урок 20. 00:06:11
    Enums
  • Урок 21. 00:06:53
    The Pub Package System
  • Урок 22. 00:03:21
    Linting
  • Урок 23. 00:16:31
    Classes - Basics
  • Урок 24. 00:02:24
    Classes - Static Members
  • Урок 25. 00:06:23
    Classes - Private Members
  • Урок 26. 00:11:24
    Classes - Properties
  • Урок 27. 00:06:56
    Classes - Equality
  • Урок 28. 00:15:38
    Inheritance - Extending a Class
  • Урок 29. 00:03:57
    Factory Constructors
  • Урок 30. 00:04:19
    Inheritance - Abstract Classes
  • Урок 31. 00:06:05
    Inheritance - Interfaces
  • Урок 32. 00:03:13
    Generics
  • Урок 33. 00:05:48
    Mixins
  • Урок 34. 00:04:52
    Extensions
  • Урок 35. 00:03:16
    More About Files and Packages
  • Урок 36. 00:09:53
    Immutable Data Classes - Basics
  • Урок 37. 00:11:55
    Freezed Data Classes
  • Урок 38. 00:16:18
    Freezed Unions
  • Урок 39. 00:06:32
    Error Handling
  • Урок 40. 00:12:09
    Asynchrony - Futures
  • Урок 41. 00:05:25
    Asynchrony - Stream Basics
  • Урок 42. 00:06:21
    Asynchrony - Stream Generators and Operators
  • Урок 43. 00:05:30
    Module Introduction
  • Урок 44. 00:23:18
    Flutter 101
  • Урок 45. 00:06:02
    Reorganizing The Default App
  • Урок 46. 00:04:16
    RangeSelectorPage Outline
  • Урок 47. 00:06:16
    Creating the Input Form UI
  • Урок 48. 00:02:19
    Removing Widget Code Duplication
  • Урок 49. 00:07:13
    Minimum and Maximum Range Fields
  • Урок 50. 00:02:51
    Field Validators
  • Урок 51. 00:06:25
    Validating and Saving the Form
  • Урок 52. 00:11:14
    Extracting the Form Into a Separate Widget
  • Урок 53. 00:09:38
    Navigating to the Randomizer Page
  • Урок 54. 00:13:20
    Implementing the Randomizer Page
  • Урок 55. 00:14:22
    Reimplementing With Flutter Hooks
  • Урок 56. 00:10:10
    Creating a ChangeNotifier
  • Урок 57. 00:15:36
    Providing the ChangeNotifier Around the App Using Provider
  • Урок 58. 00:05:29
    Adding a Riverpod Dependency
  • Урок 59. 00:16:25
    Using ChangeNotifier With Riverpod
  • Урок 60. 00:20:12
    Managing State Immutably With StateNotifier
  • Урок 61. 00:14:16
    Repo Viewer Module Introduction
  • Урок 62. 00:08:22
    Setting Up the Project
  • Урок 63. 00:06:39
    Creating an OAuth App and a Personal Access Token
  • Урок 64. 00:05:25
    Making a Test Authorized Request
  • Урок 65. 00:05:31
    Overview of the OAuth2 Authorization Code Flow
  • Урок 66. 00:18:47
    Architectural Overview
  • Урок 67. 00:13:16
    Adding Dependencies
  • Урок 68. 00:04:21
    Setting Up Analysis Options
  • Урок 69. 00:07:20
    Auth Failure
  • Урок 70. 00:07:18
    Starting With the Auth Infrastructure Layer
  • Урок 71. 00:15:00
    Secure Credentials Storage
  • Урок 72. 00:08:49
    Getting Signed-In Credentials
  • Урок 73. 00:11:19
    IDs, Scopes and Endpoints
  • Урок 74. 00:06:22
    Creating the AuthorizationCodeGrant
  • Урок 75. 00:09:51
    Handling the Authorization Response
  • Урок 76. 00:09:27
    Changing the Access Token Response Format To JSON
  • Урок 77. 00:24:05
    Signing Out and Token Revocation
  • Урок 78. 00:08:50
    Handling the Offline Sign Out Behavior
  • Урок 79. 00:05:54
    DioError Extension
  • Урок 80. 00:10:08
    Refresh Credentials Method
  • Урок 81. 00:08:58
    Starting With the Auth Application Layer
  • Урок 82. 00:06:42
    Writing the First AuthNotifier Method
  • Урок 83. 00:14:50
    Creating an AuthUriCallback
  • Урок 84. 00:06:15
    Orchestrating the Sign In Process
  • Урок 85. 00:03:54
    Sign Out and Auth Application Layer Conclusion
  • Урок 86. 00:12:10
    Auth Providers
  • Урок 87. 00:05:38
    Setting Up Presentation Layer Pages
  • Урок 88. 00:06:33
    Creating an AppWidget
  • Урок 89. 00:12:28
    Setting Up AutoRoute
  • Урок 90. 00:09:54
    Creating a Splash Page
  • Урок 91. 00:07:43
    Initialization Provider
  • Урок 92. 00:10:40
    Navigating Based On the AuthState
  • Урок 93. 00:12:16
    Building the Sign-In Page UI
  • Урок 94. 00:08:02
    Paving the Way for the Auth WebView
  • Урок 95. 00:09:42
    Auth Callback Functions
  • Урок 96. 00:07:17
    Creating a WebView
  • Урок 97. 00:10:50
    Intercepting Redirection Attempts & Finishing the WebView
  • Урок 98. 00:05:58
    Android-Specific WebView Setup
  • Урок 99. 00:29:57
    Researching the GitHub API Endpoints
  • Урок 100. 00:06:48
    Similarities Between Starred And Search Endpoints
  • Урок 101. 00:08:11
    Creating the GitHub Feature Folder Structure
  • Урок 102. 00:13:35
    GitHub Domain Entities
  • Урок 103. 00:02:19
    GitHub Failure
  • Урок 104. 00:06:40
    Starting With the Data Transfer Objects
  • Урок 105. 00:10:41
    Using Json Serializable
  • Урок 106. 00:03:44
    Converting Between DTOs and Entities
  • Урок 107. 00:09:51
    GithubRepoDTO
  • Урок 108. 00:03:31
    Converting the GithubRepoDTO Between Layers
  • Урок 109. 00:06:24
    Explanation of ETags and General Caching
  • Урок 110. 00:03:25
    First Draft of the StarredReposRemoteService Interface
  • Урок 111. 00:06:11
    Creating a RemoteResponse Union
  • Урок 112. 00:20:44
    Setting Up a SembastDatabase Class
  • Урок 113. 00:03:33
    Registering a Sembast Provider
  • Урок 114. 00:09:49
    Implementing the First Version of the GithubHeaders Data Class
  • Урок 115. 00:28:22
    Parsing the Link Header for Pagination Purposes
  • Урок 116. 00:15:51
    Caching the GitHub Headers
  • Урок 117. 00:22:16
    Getting Starred Repos Page - Starting With the Implementation
  • Урок 118. 00:12:03
    Getting Starred Response Page - Handling All RemoteResponse Cases
  • Урок 119. 00:15:55
    Passing the Max Page Number in the RemoteResponse
  • Урок 120. 00:13:42
    Indicating Freshness of the Data
  • Урок 121. 00:12:25
    StarredReposRepository Implementation Part 1 - Using Only Remote Service
  • Урок 122. 00:15:31
    StarredReposLocalService - Upserting a Page
  • Урок 123. 00:15:04
    StarredReposLocalService - Reading a Page
  • Урок 124. 00:07:12
    StarredReposRepository Implementation Part 2 - Local Service
  • Урок 125. 00:18:46
    OAuth2Interceptor Part 1
  • Урок 126. 00:12:44
    OAuth2Interceptor Part 2
  • Урок 127. 00:13:54
    Providing the OAuth2Interceptor
  • Урок 128. 00:21:47
    Creating a StarredReposState
  • Урок 129. 00:06:25
    StarredReposNotifier - First Setup
  • Урок 130. 00:13:18
    Finishing the StarredReposNotifier
  • Урок 131. 00:09:15
    Providers for the Starred Repos Feature
  • Урок 132. 00:14:33
    Initial Creation of the PaginatedReposListView
  • Урок 133. 00:13:37
    Configuring the PaginatedReposListView
  • Урок 134. 00:14:25
    Repo Tile Initial Creation and Fighting Fires
  • Урок 135. 00:09:04
    Repo Tile Part 1
  • Урок 136. 00:05:39
    Fixing Dio's Wrong 304 Status Code Categorization
  • Урок 137. 00:09:03
    Repo Tile Part 2
  • Урок 138. 00:11:19
    Loading Repo Tile - Shimmer Effect
  • Урок 139. 00:20:41
    Loading Repo Tile - Layout
  • Урок 140. 00:25:24
    Failure Repo Tile
  • Урок 141. 00:08:53
    Adding Pagination Part 1
  • Урок 142. 00:14:49
    Adding Pagination Part 2
  • Урок 143. 00:14:36
    No Connection Toast
  • Урок 144. 00:11:17
    No Results Display
  • Урок 145. 00:08:42
    Using the Local Page Count In the No Connection State
  • Урок 146. 00:11:13
    Searched Repos Feature Overview
  • Урок 147. 00:13:06
    Removing Duplication - Repos Remote Service
  • Урок 148. 00:10:49
    Creating Searched Repos Repository
  • Урок 149. 00:12:24
    Removing Duplication - Paginated Repos Notifier
  • Урок 150. 00:08:53
    Searched Repos Providers and Start of Dependency Generalization
  • Урок 151. 00:12:33
    Finishing the Dependency Generalization
  • Урок 152. 00:10:08
    Creating the Searched Repos Page
  • Урок 153. 00:05:41
    Fixing the Old Data Issue With AutoDispose Provider
  • Урок 154. 00:07:42
    Explanation of the Search Feature
  • Урок 155. 00:13:00
    Watching Search Terms
  • Урок 156. 00:07:27
    Adding Search Terms and Sorting
  • Урок 157. 00:16:36
    Deleting and Putting Search Terms First
  • Урок 158. 00:12:00
    Search History Application Layer
  • Урок 159. 00:13:25
    Creating a SearchBar Widget and Search Feature Providers
  • Урок 160. 00:10:38
    Adding Parameters to the Search Bar
  • Урок 161. 00:11:52
    Building the Search Bar UI Part 1
  • Урок 162. 00:03:47
    Fixing the Failure Repo Tile
  • Урок 163. 00:10:44
    Building the Search Bar UI Part 2
  • Урок 164. 00:07:09
    Search Bar Actions
  • Урок 165. 00:12:22
    Minimum Viable Search Bar UI
  • Урок 166. 00:09:00
    The onSubmitted Search Bar Callback
  • Урок 167. 00:09:39
    Search Bar Dropdown Background
  • Урок 168. 00:25:16
    Finishing Up the Search Bar
  • Урок 169. 00:17:14
    Adding Search Bar to the Searched Repos Page
  • Урок 170. 00:09:28
    Platform-Adaptive Search Bar Back Button
  • Урок 171. 00:17:49
    Overview of the Repo Detail Feature
  • Урок 172. 00:14:04
    Creating Repo Detail Entity and DTO
  • Урок 173. 00:08:13
    Getting the Readme HTML
  • Урок 174. 00:08:40
    Getting the Starred Status of a Repo
  • Урок 175. 00:10:21
    Switching the Starred Status of a Repo
  • Урок 176. 00:22:10
    Local Repo Detail Service Part 1
  • Урок 177. 00:16:37
    Local Repo Detail Service Part 2 - Last Used Timestamp
  • Урок 178. 00:09:25
    Local Repo Detail Service Part 3 - Finishing Up the Caching Strategy
  • Урок 179. 00:04:21
    Deleting the Repo Detail Headers
  • Урок 180. 00:08:27
    Repo Detail Repository Part 1
  • Урок 181. 00:16:16
    Repo Detail Repository Part 2
  • Урок 182. 00:13:31
    Repo Detail State and Notifier
  • Урок 183. 00:17:33
    Optimistic Updates in the Repo Detail Notifier
  • Урок 184. 00:18:56
    Preparing the Repo Detail Page
  • Урок 185. 00:05:13
    Changing the App Bar Color
  • Урок 186. 00:04:47
    Providers for the Repo Detail Subfeature
  • Урок 187. 00:31:07
    Repo Detail Page Part 1
  • Урок 188. 00:18:35
    Repo Detail Page Part 2
  • Урок 189. 00:06:32
    Opening Links in an External Browser
  • Урок 190. 00:05:19
    Module Recap
  • Урок 191. 00:12:55
    Initial Setup
  • Урок 192. 00:15:30
    Writing Strings and Using Them Within the App
  • Урок 193. 00:08:24
    Supporting Plural Strings
  • Урок 194. 00:09:52
    Adding Another Language
  • Урок 195. 00:09:35
    Module Introduction and Setup
  • Урок 196. 00:08:21
    The Need for Method Channels
  • Урок 197. 00:13:34
    Exploring the Native Code and Writing Dart Code
  • Урок 198. 00:13:04
    Enabling Code Completion for Writing Kotlin
  • Урок 199. 00:19:29
    Creating an Android Notification Channel
  • Урок 200. 00:12:24
    Showing a Notification on Android
  • Урок 201. 00:07:08
    Using the Plugin From a Flutter App and Showcasing on Android
  • Урок 202. 00:07:00
    Opening the iOS Plugin Project in XCode
  • Урок 203. 00:22:51
    Showing a Notification on iOS