Dart and Flutter The Complete Developers Guide
What you’ll learn
Build beautiful multi-screen apps with Flutter
Understand the different approaches for loading and maintaining data in Flutter apps
Create and publish open source projects using Dart
Learn how to build offline-enabled apps with incredibly efficient data loading
Comprehend the best method for reading the incredible amount of Flutter documentation
Store long-term data on a user’s physical device using SQLite
Master streams and understand reactive programming to create Flutter apps
Requirements
Previous programming experience with Javascript, Java, Python, or similar is required .
Description
If you’re tired of spinning your wheels learning Swift or Android, this is the course for you.
Animations? You will learn it. Architectural Patterns? Included. Navigation? Of course!
Flutter is a newcomer to the mobile development scene. Strongly supported by Google, it is already viewed as an ideal platform for replacing native Swift and Android development. Thanks to its amazing standard library of widgets, fast compile times, and amazing documentation, developers are falling in love with Flutter! This course supports MacOS and Windows – develop Android and iOS apps easily!Flutter apps are created using the language Dart. No problem if you’re not already familiar with Dart; this course includes a lightning fast introduction to Dart at the beginning, along with hours of bonus lectures at the end of the course solely focused on Dart and its advanced features. If you come from a background working with Java, Ruby, or Javascript, you’ll feel right at home with Dart – the syntax is nearly identical, only a few core concepts need to be learned. Dart is a strongly typed language – but don’t be discouraged if you’re not a fan of strong types! I spend special time in this course to make it extra clear why developing with a strongly typed language is a breeze!One of the greatest challenges around developing Flutter applications right now is understanding how to design and architect apps. Flutter is still in rapid development, and the community at large is still trying to find out the best techniques. With this in mind, special attention is paid in the course to making sure you understand the primary design patterns advocated by Google’s Flutter team, including both the ‘Stateful Widget’ pattern and the ‘BLOC’ pattern. The ‘BLOC’ pattern makes heavy use of Reactive Programming techniques, which you’ll learn about in this course as well. These techniques can be easily applied to other languages and frameworks as well – talk about a bonus!Of course, no mobile app is complete without some nice looking animations. You’ll learn how to build animations using Flutter’s standard library of tools, which can be easily used to make interactions that your users will love. You should plan to complete the course with knowledge of how to reference Flutter’s standard library of widgets to assemble complex animations.Sign up today and you will:Understand the Dart language and its primary featuresStore information for long periods of time on the user’s device with offline storageLearn how to optimize network requests for improved performance on mobile networksDelight your users with complex animationsExpose the functionality of your apps with multi-screen navigationSteer through the incredible amount of Flutter documentationMaster Reactive Programming with streams by using RxDartImplement advanced design patterns advocated by Google’s official Flutter teamHandle user input with form validationLearn to build open source Dart packages and distribute them to other developersI’ve built the course that I would have wanted to take when I was learning Flutter. A course that explains the concepts and how they’re implemented in the best order for you to learn and deeply understand them.
Overview
Section 1: Let’s Dive In!
Lecture 1 How to Get Help
Lecture 2 Course Resources
Lecture 3 Join Our Community!
Lecture 4 Course Organization
Section 2: A Dart Introduction
Lecture 5 Dart Overview
Lecture 6 The Dartpad Editor
Lecture 7 Our First Program
Lecture 8 Pulling the Pieces Apart
Lecture 9 Functions in Dart
Lecture 10 Introduction to Types
Lecture 11 Why Use Types?
Lecture 12 String Interpolation
Lecture 13 Object Oriented Programming in Dart
Lecture 14 Creating Classes
Lecture 15 Creating Class Instances
Lecture 16 Constructor Functions
Lecture 17 Review on Constructors
Section 3: Staying on Target with Dart
Lecture 18 App Overview
Lecture 19 OOP Design Flow
Lecture 20 Adding Fields to Classes
Lecture 21 Associated Methods
Lecture 22 More Initialization with Constructors
Lecture 23 For Loops
Lecture 24 Adding Elements to Lists
Lecture 25 More on Variable Initialization
Lecture 26 Customizing Print Statements
Lecture 27 ToString on Cards
Lecture 28 Shuffling a List
Lecture 29 Annotating Argument Types
Lecture 30 Filtering Lists
Lecture 31 Annotating Argument Types
Lecture 32 Filtering Lists
Lecture 33 Shorthand Function Syntax
Lecture 34 Removing Individual Records
Lecture 35 RemoveCard Implementation
Lecture 36 Named Parameters
Section 4: Flutter Environment Setup – MacOS
Lecture 37 Flutter Setup on MacOS
Lecture 38 SDK Extraction
Lecture 39 Editing the PATH Variable
Lecture 40 XCode License
Lecture 41 Generating Flutter Projects
Section 5: MacOS Setup – Android
Lecture 42 Android Setup on MacOS
Lecture 43 Android Dependencies
Lecture 44 Android Project Setup
Lecture 45 More Android Dependencies!
Lecture 46 Android Emulator Creation
Lecture 47 Flutter Startup
Lecture 48 Finished Android Setup
Section 6: MacOS Setup – iOS
Lecture 49 iOS on Mac Setup
Lecture 50 XCode Setup
Lecture 51 iOS Simulator Startup
Lecture 52 App Startup
Section 7: Flutter Setup on PC
Lecture 53 Flutter Install
Lecture 54 More Flutter Installation
Lecture 55 Android Install
Lecture 56 Additional Dependencies
Lecture 57 Generating a Project
Lecture 58 Selecting an Image
Lecture 59 Starting the Emulator
Lecture 60 Finishing Android Setup
Section 8: App Building Time!
Lecture 61 Code Editor Setup
Lecture 62 What’s Flutter About, Anyways?
Lecture 63 App Overview
Lecture 64 The Four Step Design Process
Lecture 65 Import Statements
Lecture 66 Creating Widgets
Lecture 67 Displaying Content on Screen
Lecture 68 Showing a Scaffold
Lecture 69 Customizing the App Bar
Lecture 70 Named Parameter Clarification
Lecture 71 Required Parameters
Lecture 72 Child Parameters
Lecture 73 Displaying Icons
Lecture 74 Adding Custom Widgets
Section 9: State Design with Flutter Apps
Lecture 75 Stateless vs Stateful Widgets
Lecture 76 The Build Method
Lecture 77 Local Import Statements
Lecture 78 Quick Breather and Review
Lecture 79 Refactoring Stateless to Stateful
Lecture 80 More Refactoring to Stateful Widgets
Section 10: High-Level Dart
Lecture 81 Generics in Dart
Lecture 82 Why Two Classes?
Section 11: HTTP Requests with Flutter
Lecture 83 Photos API
Lecture 84 Working with JSON
Lecture 85 Casting JSON to Model Instances
Lecture 86 Named Constructors
Lecture 87 Adding an Image Model
Lecture 88 Function References
Lecture 89 The HTTP Package
Lecture 90 Issuing HTTP Requests
Lecture 91 Handling Dart Futures
Lecture 92 Parsing Future Responses into a Model
Lecture 93 Updating the AppState Widget
Lecture 94 Building Lists of Widgets
Lecture 95 Sending Images to the ImageList
Lecture 96 The Final Keyword
Lecture 97 Building Lists with ListView
Lecture 98 Listing URL’s
Lecture 99 Text to Images
Lecture 100 Containers for Positioning
Lecture 101 Adding Border Style
Lecture 102 Column Widgets for Layout
Lecture 103 Selective Padding
Lecture 104 App Review
Section 12: Forms and Validation with Flutter
Lecture 105 App Overview
Lecture 106 Boilerplate App Code
Lecture 107 Creating the Login Screen
Lecture 108 More Container Styling
Lecture 109 Labels and Hint Text
Lecture 110 Customizing Keyboard Type
Lecture 111 Handling Password Inputs
Lecture 112 Displaying Buttons with RaisedButton
Lecture 113 Changing Widget Colors
Lecture 114 Layout Control
Lecture 115 Form Validation
Lecture 116 Referencing Widgets with Global Keys
Lecture 117 The Form Widget and FormState
Lecture 118 Creating a Global Key
Lecture 119 Referencing FormState with Global Keys
Lecture 120 Validating via FormState
Lecture 121 Triggering Validation
Lecture 122 Retrieving Form Values
Lecture 123 Final Form Submittal
Lecture 124 Code Reuse with Mixins
Lecture 125 Mixin Validator Implementation
Section 13: Reactive Programming with Dart
Lecture 126 A Quick Detour
Lecture 127 Streams by Analogy
Lecture 128 Characteristics of Streams
Lecture 129 StreamControllers and Sinks
Lecture 130 Mapping a Stream
Lecture 131 Adding a StreamTransformer
Lecture 132 Implementing the Listener
Lecture 133 Stream Review
Lecture 134 Let’s Build a Game
Lecture 135 Why Streams?
Lecture 136 Word Guessing
Lecture 137 Stream’s ‘Take’ and ‘Where’ Functions
Lecture 138 Validation with Streams
Lecture 139 Email Validation
Lecture 140 Wiring up the Error
Section 14: Advanced Flutter Architecture – The Bloc Pattern
Lecture 141 BLOC’s vs Stateful Widgets
Lecture 142 The Purpose of Streams with Blocs
Lecture 143 Generating a New Project
Lecture 144 App Boilerplate
Lecture 145 Second Time on LoginScreen
Lecture 146 TextFields with RaisedButtons
Lecture 147 How to Use TextFields
Lecture 148 BLOC Design for TextFields
Lecture 149 Annotating Stream Types
Lecture 150 Issues with Bloc Access
Lecture 151 Shortcut Access with Getters
Lecture 152 Public vs Private Fields
Lecture 153 Improving the BLOC Api
Lecture 154 Validation Transformers
Lecture 155 A Technicality Around Mixins
Lecture 156 Cleaning Up Controllers
Lecture 157 Bloc Application
Section 15: Consuming BLOC Data
Lecture 158 The StreamBuilder Widget
Lecture 159 Streambuilder for Password Fields
Lecture 160 Scoped Bloc Approach
Lecture 161 Provider Implementation
Lecture 162 The Provider’s ‘of’ Function
Lecture 163 The Provider’s Constructor
Lecture 164 The Provider in Action
Lecture 165 Accessing the Bloc
Lecture 166 Breather and Review
Lecture 167 Enabling Form Submission
Lecture 168 Stream Merging Possibilities
Section 16: RxDart for Reactive Programming
Lecture 169 Introducing RxDart
Lecture 170 More on RxDart
Lecture 171 The CombineLatest Function
Lecture 172 CombineLatest in Action
Lecture 173 More on StreamBuilder
Lecture 174 Interpreting Stream Values
Lecture 175 Broadcast Streams
Lecture 176 Disabled by Default
Lecture 177 Replacing Controllers with Subjects
Lecture 178 Review of BLOCs
Section 17: Building Delightful Animations
Lecture 179 App Overview
Lecture 180 Animation Library Classes
Lecture 181 App Boilerplate
Lecture 182 StatefulWidgets for Animations
Lecture 183 Widget Structure
Lecture 184 Displaying a Cat
Lecture 185 The InitState Method
Lecture 186 Declaring the TickerProvider
Lecture 187 Tweens with Curves
Lecture 188 Performance Savings with AnimatedBuilder
Lecture 189 Nature of Animation
Lecture 190 Starting the Animation
Lecture 191 Watching for Taps with GestureDetector
Lecture 192 Reversing Animation States
Lecture 193 Building the Box
Lecture 194 Layouts with the Stack Widget
Lecture 195 Order of Drawing Widgets
Lecture 196 Add Center Widget
Lecture 197 Positioned Widgets
Lecture 198 Expanding Stack Dimensions
Lecture 199 Three Reasons for Strange Layouts
Lecture 200 Positioned Constraints
Lecture 201 Negative Offsets
Lecture 202 Stack Clip Settings
Lecture 203 Adjusting Tween Ranges
Lecture 204 Adding Box Flaps
Lecture 205 Rotating Widgets
Lecture 206 Rotation by Radians
Lecture 207 Changing Rotation Point
Lecture 208 A Touch of Positioning
Lecture 209 BoxAnimation Controller
Lecture 210 Adding Animated Builders
Lecture 211 Resetting Animations
Lecture 212 Constraining Animation Range
Lecture 213 Adding the Right Flap
Lecture 214 Negative Rotation Values
Lecture 215 Toggling Animation State
Lecture 216 Animation Wrapup
Section 18: Performant Data Fetching
Lecture 217 App Overview
Lecture 218 Hacker News API
Lecture 219 More API Challenges
Lecture 220 API Performance Strategy
Lecture 221 Creating the ItemModel Class
Lecture 222 A Few More ItemModel Properties
Lecture 223 API Provider Implementation
Lecture 224 Fetching Individual Items
Section 19: Testing with Flutter and Dart
Lecture 225 Testing with Dart
Lecture 226 A Few Imports
Lecture 227 Writing Expectations
Lecture 228 Mocking HTTP Requests
Lecture 229 Returning JSON
Lecture 230 Testing FetchItem
Section 20: Offline Data Storage
Lecture 231 SQLite DB Provider
Lecture 232 Database Imports
Lecture 233 Async Constructors
Lecture 234 Creating a DB Connection
Lecture 235 Creating Tables with SQLite
Lecture 236 Adding Table Columns
Lecture 237 Issuing Queries
Lecture 238 Multiple Named Constructors
Lecture 239 Massaging DB Return Maps
Lecture 240 Turning Class Instances to Maps
Lecture 241 Implementing the Repository
Lecture 242 More on the Repository
Lecture 243 Type Annotations
Lecture 244 Casting Lists
Section 21: Type Design
Lecture 245 More on the Repository
Lecture 246 Abstract Classes
Lecture 247 The Need for Abstract Classes
Lecture 248 Why Abstract Classes?
Lecture 249 More on Abstract Classes
Lecture 250 Repository Interface Design
Lecture 251 Defining the Source
Lecture 252 Cache Definitions
Lecture 253 Lists of Sources and Caches
Lecture 254 Ultimate Reusability
Lecture 255 Quick Gotcha
Lecture 256 Another Quick Gotcha!
Lecture 257 FetchTopIds Implementation
Section 22: On Demand Widget Rendering
Lecture 258 App Setup
Lecture 259 A Touch of Boilerplate
Lecture 260 Data Fetching Concerns
Lecture 261 Solution Outline
Lecture 262 FutureBuilder in Action
Lecture 263 The Stories Provider
Lecture 264 Bloc Design
Lecture 265 Exposing Bloc Getters
Lecture 266 Wiring up the Stories Provider
Lecture 267 Bloc Testing
Lecture 268 Type Annotations Solve Problems
Lecture 269 Circular Progress Indicator
Lecture 270 Item Fetching Architecture
Lecture 271 Giant Gotcha with StreamBuilder
Lecture 272 Giant Gotcha Solution
Lecture 273 Implementing ScanStreamTransformer
Lecture 274 Finishing the ScanStreamTransformer
Lecture 275 Adding the Items Controller
Lecture 276 A Gotcha Around Streams? Impossible!
Lecture 277 Single Transformer Application
Lecture 278 The ListView Tile
Lecture 279 StreamBuilder Setup
Lecture 280 Wrapping Up the FutureBuilder
Lecture 281 Double Gotcha!
Lecture 282 Stream Subscriptions
Lecture 283 Stream Subscription Fix
Lecture 284 Additional Streams
Lecture 285 A Laborious Refactor
Lecture 286 Result of Refactor
Lecture 287 Quick Debug Session
Lecture 288 Resolving Database Conflicts
Lecture 289 Building Story Tiles
Lecture 290 Comments Icon
Lecture 291 Applying Dividers with Height
Lecture 292 Loading Container Stand-in
Lecture 293 Building the Loading Container
Lecture 294 Showing the Loading Container
Lecture 295 Long-Lived Cache Values
Lecture 296 Swipe to Refresh Indicator
Lecture 297 Implementing a Refresh Widget
Lecture 298 Clearing Database Tables
Lecture 299 Communicating a Future to onRefresh
Section 23: Navigation with Flutter
Lecture 300 Navigation in Flutter
Lecture 301 Map Based Routing
Lecture 302 OnGenerateRoute-Based Navigation
Lecture 303 OnGenerateRoute Implementation
Lecture 304 Navigating in Style!
Lecture 305 A PageRoute for NewsDetail
Lecture 306 A Scaffold in NewsDetail
Lecture 307 Parsing Route Settings
Lecture 308 The Comments Bloc Provider
Lecture 309 Comments Bloc Design
Lecture 310 More on Comments Bloc
Lecture 311 Recursive Data Fetching
Lecture 312 Quick Fix
Lecture 313 Connecting the Comments Provider
Lecture 314 Testing Recursive Fetching
Lecture 315 Consuming the Item Map
Lecture 316 Displaying the Story Title
Lecture 317 Text Styling
Lecture 318 Container Alignment
Lecture 319 Building the Comments List
Lecture 320 More Logic Extraction
Lecture 321 The Comment Widget
Lecture 322 Comment’s FutureBuilder
Lecture 323 Showing Individual COmments
Lecture 324 Recursive Rendering
Lecture 325 Styling the Comment List
Lecture 326 Defaulting Null Values
Lecture 327 Handling Deleted Comments
Lecture 328 Nested Comments
Lecture 329 ListTile’s ContentPadding Property
Lecture 330 Replacing Placeholder Characters
Lecture 331 Loading Containers for Comments
Lecture 332 App Wrapup
Lecture 333 Last Fix!
Section 24: Appendix One: Building Open Source with Dart
Lecture 334 Dart Local Installation
Lecture 335 Dart Install on Mac
Lecture 336 Editor Setup for Dart
Lecture 337 App Overview
Lecture 338 Folder and File Structure
Lecture 339 The PubSpec File
Lecture 340 Running Dart Files
Lecture 341 Program Design Methodology
Lecture 342 Class Creation
Lecture 343 Terminal Design
Lecture 344 Terminal Implementation
Lecture 345 Stdout and Stdin
Lecture 346 Import Statements
Lecture 347 Stdout Instance
Lecture 348 More on Import Statements
Lecture 349 Testing the Import Class
Lecture 350 Checking Operating System
Lecture 351 Clearing Windows Terminal
Lecture 352 Clearing Other Terminals
Lecture 353 Testing ClearScreen
Lecture 354 Collecting Input Over Stdin
Lecture 355 Option Class FIelds
Lecture 356 Adding Dynamic Fields
Lecture 357 Printing Individual Options
Lecture 358 Testing Option Printing
Lecture 359 List Shortcomings
Lecture 360 Maps in Dart
Lecture 361 Refactor to Maps
Lecture 362 The Prompter Class
Lecture 363 Testing the Prompter
Lecture 364 Extracting the Terminal
Lecture 365 Var vs Final for Variables
Lecture 366 Final’s Affect on Values
Lecture 367 Const’s Dual Nature
Lecture 368 Const’s Behavior by Type
Lecture 369 Marking Terminal as Const
Lecture 370 Private Variables
Lecture 371 Finishing Prompter
Lecture 372 Error Handling
Lecture 373 Asking Binary Questions
Lecture 374 Testing Binary Inputs
Lecture 375 Code Similarities
Lecture 376 Refactor for Code Reuse
Lecture 377 More on Private
Lecture 378 Central Lib File
Lecture 379 A Single Export Point
Lecture 380 A Relevant Example File
Lecture 381 Outstanding Project Config
Lecture 382 Uploading the Prompter Lib
Section 25: Appendix Two: Building a Dart CLI
Lecture 383 App Overview
Lecture 384 Project Setup
Lecture 385 Importing Library Code
Lecture 386 Forcibly Exiting a Program
Lecture 387 Prompting for File Type
Lecture 388 Implementation Flow
Lecture 389 Working with the Current Directory
Lecture 390 Filtering Non-Files
Lecture 391 Filtering Non-Images
Lecture 392 Building Options from Images
Lecture 393 Testing Image Selection
Lecture 394 Converting Images
Lecture 395 The ConvertImage Function
Lecture 396 Reading File Contents
Lecture 397 Encoding to JPG or PNG
Lecture 398 Writing Files to the Hard Drive
Lecture 399 Returning the Image Name
Lecture 400 Testing Image Conversion
Lecture 401 Opening the Image
Section 26: Extras
Lecture 402 Bonus!
Developers looking to build quality apps with Flutter
Course Information:
Udemy | English | 31h 14m | 20.42 GB
Created by: Stephen Grider
You Can See More Courses in the Developer >> Greetings from CourseDown.com