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