Flutter & Dart The Complete Guide 2023 Edition
What you’ll learn
Learn Flutter and Dart from the ground up, step-by-step
Build engaging native mobile apps for both Android and iOS
Use features like Google Maps, the device camera, authentication and much more!
Learn how to upload images and how to send manual and automated push notifications
Learn all the basics without stopping after them: Dive deeply into Flutter & Dart and become an advanced developer
Requirements
Basic programming language will help but is not a must-have
You can use either Windows, macOS or Linux for Android app development – iOS apps can only be built on macOS though
NO prior iOS or Android development experience is required
NO prior Flutter or Dart experience is required – this course starts at zero!
Description
Join the most comprehensive & bestselling Flutter course and learn how to build amazing iOS and Android apps!You don’t need to learn Android/ Java and iOS/ Swift to build real native mobile apps!Flutter – a framework developed by Google – allows you to learn one language (Dart) and build beautiful native mobile apps in no time. Flutter is a SDK providing the tooling to compile Dart code into native code and it also gives you a rich set of pre-built and pre-styled UI elements (so called widgets) which you can use to compose your user interfaces.Flutter is extremely trending and gets used for major Google apps like their Adwords app – it’s now marked as “ready for production”, hence now is the time to jump in and learn it!This course will teach Flutter & Dart from scratch, NO prior knowledge of either of the two is required! And you certainly don’t need any Android or iOS development experience since the whole idea behind Flutter is to only learn one language.You’ll learn Flutter not only in theory but we’ll build a complete, realistic app throughout this course. This app will feature both all the core basics as well as advanced features like using Google Maps, the device camera, adding animations and more!With Flutter, you’ll be able to write code only once and ship your apps both to the Apple AppStore and Google Play.Use Google’s Material Design to build beautiful, yet fully customizable, apps in no time with almost zero effort. You can use the rich widget suite Flutter provides to add common UI elements like buttons, switches, forms, toolbars, lists and more – or you simply build your own widgets – Flutter makes that a breeze, too.Here’s what’s included in the course:Detailed setup instructions for both macOS and WindowsA thorough introduction to Flutter, Dart and the concept behind widgetsAn overview of the built-in widgets and how you may add your own onesDebugging tipps & tricksPage navigation with tabs, side drawers and stack-based navigationState management solutionsHandling and validating user inputConnecting your Flutter app to backend servers by sending Http requestsUser authenticationAdding Google MapsUsing native device features like the cameraAdding beautiful animations & page transitionsImage UploadPush Notifications – manual approach and automatedHow to publish your app to the app storesAnd more!This course is for you if …You’re interested in building real native mobile apps for the two most popular mobile platforms – iOS and AndroidYou want to explore the full set of features Flutter offersDon’t want to spend hours learning two completely different languagesCourse prerequisites:Basic programming language knowledge will help a lot but is not a hard requirementYou DON’T need to know Flutter or DartYou DON’T need to know iOS (Swift/ObjectiveC) or Android (Java)
Overview
Section 1: Introduction
Lecture 1 Introduction
Lecture 2 What is Flutter?
Lecture 3 Join our Online Learning Community
Lecture 4 Understanding the Flutter Architecture
Lecture 5 How Flutter & Dart Code Gets Compiled To Native Apps
Lecture 6 Understanding Flutter Versions
Lecture 7 Flutter macOS Setup
Lecture 8 macOS Development Environment
Lecture 9 Flutter Windows Setup
Lecture 10 Windows Development Environment
Lecture 11 Flutter & Material Design
Lecture 12 Flutter Alternatives
Lecture 13 Course Outline
Lecture 14 How To Get The Most Out Of The Course
Lecture 15 Useful Resources & Links
Section 2: Flutter Basics [QUIZ APP]
Lecture 16 Module Introduction
Lecture 17 Creating a New Project
Lecture 18 An Overview of the Generated Files & Folders
Lecture 19 More on Git (Version Control System)
Lecture 20 Analyzing the Default App
Lecture 21 Dart Basics
Lecture 22 More Dart Basics
Lecture 23 Dart Basics – Summary
Lecture 24 Building an App From Scratch
Lecture 25 Running the App on an Emulator
Lecture 26 Class Constructors & Named Arguments
Lecture 27 First Summary & Additional Syntax
Lecture 28 Building a Widget Tree
Lecture 29 Visible (Input / Output) & Invisible (Layout / Control) Widgets
Lecture 30 Adding Layout Widgets
Lecture 31 Using The “Old” Buttons
Lecture 32 Connecting Functions & Buttons
Lecture 33 Anonymous Functions
Lecture 34 Updating Widget Data (Or: Using StatelessWidget Incorrectly)
Lecture 35 [DART DEEP DIVE] Understanding Lists
Lecture 36 Updating Correctly with Stateful Widgets
Lecture 37 A Brief Look Under The Hood
Lecture 38 Using Private Properties
Lecture 39 Creating a New, Custom Widget
Lecture 40 First Styling & Layouting Steps
Lecture 41 Enums & Multiple Constructors
Lecture 42 Official Docs & The Widget Catalog
Lecture 43 Styling Buttons
Lecture 44 Passing Callback Functions Around
Lecture 45 Introducing Maps
Lecture 46 Mapping Lists to Widgets
Lecture 47 final vs const
Lecture 48 Introducing “if” Statements
Lecture 49 [DART DEEP DIVE] More on “if” Statements
Lecture 50 [DART DEEP DIVE] The “null” Value & Null Safety
Lecture 51 Outputting Widgets Conditionally
Lecture 52 Splitting the App Into Widgets
Lecture 53 Calculating a Total Score
Lecture 54 Getters & “else-if”
Lecture 55 Resetting the Quiz
Lecture 56 “Old” Button Widgets vs “New” Button Widgets
Lecture 57 Wrap Up
Lecture 58 Module Resources
Section 3: Running Apps on Different Devices & Debugging Apps
Lecture 59 Module Introduction
Lecture 60 Running the App on a Real Android Device
Lecture 61 Running the App on an iOS Emulator
Lecture 62 Running the App on a Real iOS Device
Lecture 63 Working with the Emulators / Using the Emulators
Lecture 64 Understanding Error Messages & Fixing Errors
Lecture 65 Using the Debugger
Lecture 66 Getting Started with the Dart DevTools
Lecture 67 Understanding the Repaint Rainbow
Lecture 68 Wrapping up the Dart DevTools
Lecture 69 Useful Resources & Links
Section 4: Widgets, Styling, Adding Logic – Building a Real App [PERSONAL EXPENSES APP]
Lecture 70 Module Introduction
Lecture 71 An Overview of the Core Flutter Widgets
Lecture 72 Planning the App
Lecture 73 Combining Widgets
Lecture 74 Understanding Column Alignment
Lecture 75 Not a Widget: Adding a Transaction Model & Transaction Data
Lecture 76 Mapping Data Into Widgets
Lecture 77 Building a Custom List Item
Lecture 78 Styling a Container
Lecture 79 Styling Text
Lecture 80 More Styling!
Lecture 81 Containers vs Columns vs Rows
Lecture 82 Using String Interpolation
Lecture 83 Installing External Packages & Formatting Dates
Lecture 84 DateFormat Patterns
Lecture 85 Adding Text Input Widgets (TextField)
Lecture 86 Fetching User Input
Lecture 87 Splitting the App Into Widgets
Lecture 88 Connecting Widgets & Managing Data / State
Lecture 89 Adding User Transactions to the List
Lecture 90 Making the List Scrollable!
Lecture 91 Working with ListViews
Lecture 92 Further Input & Output Styling and Configuration
Lecture 93 Adding AppBar Buttons & Floating Action Buttons
Lecture 94 Showing a Modal Bottom Sheet
Lecture 95 Improving & Styling the Modal Bottom Sheet
Lecture 96 Configuring & Using Themes
Lecture 97 Custom Fonts & Working with Text Themes
Lecture 98 Updated Text Theme Properties
Lecture 99 Adding Images to the App
Lecture 100 Planning the Chart Widget
Lecture 101 Looping Through Lists
Lecture 102 More on “for” Loops
Lecture 103 Deriving Recent Transactions
Lecture 104 Creating Bars for our Chart
Lecture 105 Populating the Chart with Values
Lecture 106 Finishing the Chart Bars
Lecture 107 Flexible & Expanded: Deep Dive
Lecture 108 Adding a ListTile Widget
Lecture 109 Improving the Overall Chart
Lecture 110 Widgets & Configuring Widgets – Summary / Overview
Lecture 111 Getting Started with Date Selection
Lecture 112 Showing a DatePicker
Lecture 113 Adding Transactions with a Date
Lecture 114 Deleting Transactions & Using IconButtons
Lecture 115 Final Polishing!
Lecture 116 Wrap Up
Lecture 117 Useful Resources & Links
Section 5: Responsive & Adaptive User Interfaces and Apps
Lecture 118 Module Introduction
Lecture 119 What does “Responsive” and “Adaptive” Mean?
Lecture 120 Examples: Where we could improve the App!
Lecture 121 Calculating Sizes Dynamically
Lecture 122 Working with the “textScaleFactor”
Lecture 123 Using the LayoutBuilder Widget
Lecture 124 Controlling the Device Orientation
Lecture 125 Rendering Alternative Landscape Content – 1
Lecture 126 Finishing Landscape Mode
Lecture 127 Showing Different Content Based on Device Orientation
Lecture 128 Respecting the Softkeyboard Insets
Lecture 129 Using the Device Size in Conditions
Lecture 130 Managing the MediaQuery Object
Lecture 131 Checking the Device Platform
Lecture 132 Using Cupertino (iOS) Widgets
Lecture 133 Using the SafeArea
Lecture 134 More Cupertino Styles
Lecture 135 Using Cupertino Buttons
Lecture 136 Creating Custom Adaptive Widgets
Lecture 137 Wrap Up
Lecture 138 Useful Resources & Links
Section 6: Widget & Flutter Internals – Deep Dive
Lecture 139 Module Introduction
Lecture 140 The Problem At Hand
Lecture 141 Widget Tree & Element Tree – What, Why and How?
Lecture 142 How Flutter Rebuilds & Repaints the Screen
Lecture 143 How Flutter Executes build()
Lecture 144 Using “const” Widgets & Constructors
Lecture 145 Writing Good Code
Lecture 146 Extracting Widgets
Lecture 147 Using Builder Methods
Lecture 148 Understanding the Widget Lifecycle
Lecture 149 Calling super.initState() etc.
Lecture 150 Understanding the App Lifecycle
Lecture 151 Understanding Context
Lecture 152 A Problem with Lists & Stateful Widgets
Lecture 153 Understanding the Problem Root
Lecture 154 Using Keys
Lecture 155 Wrap Up
Lecture 156 Useful Resources & Links
Section 7: Navigation & Multiple Screens [MEALS APP]
Lecture 157 Module Introduction
Lecture 158 Planning the App
Lecture 159 Starting With The App – Adding Base Data
Lecture 160 Creating a Grid & Working with Linear Gradients
Lecture 161 Registering a Screen as the Main Screen
Lecture 162 Styling & Theming
Lecture 163 Navigating to a New Page
Lecture 164 Passing Data via the Constructor
Lecture 165 Using Named Routes & Passing Data With Named Routes
Lecture 166 Diving Deeper into Named Routes
Lecture 167 Adding a Meal Model & Data
Lecture 168 Selecting Meals for a Chosen Category
Lecture 169 Displaying Recipe Items & Using Network Images
Lecture 170 Finishing the Meal List Item
Lecture 171 Navigating to the Meal Detail Page
Lecture 172 onGenerateRoute & onUnknownRoute
Lecture 173 Finishing the Meal Detail Page
Lecture 174 Adding a TabBar to the Appbar
Lecture 175 Adding a Bottom TabBar
Lecture 176 Adding a Custom Drawer
Lecture 177 Adding Links to the Drawer
Lecture 178 Replacing Pages (Instead of Pushing)
Lecture 179 Popping Pages & Passing Data Back
Lecture 180 Adding Filter Switches
Lecture 181 Adding Filtering Logic
Lecture 182 Adding a “Mark as Favorite” Feature
Lecture 183 A Problem!
Lecture 184 Wrap Up
Lecture 185 Useful Resources & Links
Section 8: State Management [SHOP APP]
Lecture 186 Module Introduction
Lecture 187 Planning the App
Lecture 188 Defining a Data Model
Lecture 189 Working on the “Products” Grid & Item Widgets
Lecture 190 Styling & Theming the App
Lecture 191 Adding Navigation to the App
Lecture 192 Why State Management? And what is “State” and “State Management”?
Lecture 193 Understanding the “Provider” Package & Approach
Lecture 194 Working with Providers & Listeners
Lecture 195 [DART DEEP DIVE] Inheritance (“extends”) vs Mixins (“with”)
Lecture 196 Providing non-Objects
Lecture 197 Listening in Different Places & Ways
Lecture 198 Using Nested Models & Providers
Lecture 199 Exploring Alternative Provider Syntaxes
Lecture 200 Using “Consumer” instead of “Provider.of”
Lecture 201 Local State vs App-wide State
Lecture 202 Adding Shopping Cart Data
Lecture 203 Working with Multiple Providers
Lecture 204 Connecting the Cart Provider
Lecture 205 Working on the Shopping Cart & Displaying a Total
Lecture 206 Displaying a List of Cart Items
Lecture 207 Making Cart Items Dismissible
Lecture 208 Adding Product Detail Data
Lecture 209 Providing an Orders Object
Lecture 210 Adding Orders
Lecture 211 Adding an Orders Screen
Lecture 212 Using a Side Drawer
Lecture 213 Making Orders Expandable & Stateful Widgets vs Providers
Lecture 214 Wrap Up
Lecture 215 Useful Resources & Links
Section 9: Working with User Input & Forms [SHOP APP]
Lecture 216 Module Introduction
Lecture 217 Snackbars & Undoing “Add to Cart” Actions
Lecture 218 Using ScaffoldMessenger for Snackbars
Lecture 219 Showing Alert Dialogs
Lecture 220 Adding a “Manage Products” Page
Lecture 221 “Edit Product” Screen & A Problem
Lecture 222 Using Forms & Working with Form Inputs
Lecture 223 ListView or Column
Lecture 224 Managing Form Input Focus
Lecture 225 Multiline Inputs & Disposing Objects
Lecture 226 Adding an Image Preview
Lecture 227 Image Input & Image Preview
Lecture 228 Submitting Forms
Lecture 229 Validating User Input
Lecture 230 Adding Validation to All Inputs
Lecture 231 [OPTIONAL] Working with Regular Expressions
Lecture 232 Saving New Products
Lecture 233 Time to Update Products!
Lecture 234 Allowing Users to Delete Products
Lecture 235 Wrap Up
Lecture 236 Useful Resources & Links
Section 10: Sending Http Requests [SHOP APP]
Lecture 237 Module Introduction
Lecture 238 On-Device vs Web Storage
Lecture 239 How to Connect Flutter to a Database
Lecture 240 Preparing Our Backend
Lecture 241 How To Send Http Requests
Lecture 242 Using the Http Package
Lecture 243 Sending POST Requests
Lecture 244 Working with Futures in Dart
Lecture 245 [DART DEEP DIVE] Futures & Async Code
Lecture 246 Showing a Loading Indicator
Lecture 247 Handling Errors Gracefully
Lecture 248 Working with “async” & “await”
Lecture 249 Fetching Data, initState & “of(context)”
Lecture 250 How to Transform Fetched Data
Lecture 251 Implementing Pull-to-Refresh
Lecture 252 Updating Data via PATCH Requests
Lecture 253 Utilizing Optimistic Updating
Lecture 254 Creating Custom Exceptions & More Error Handling
Lecture 255 A Challenge For You!
Lecture 256 Updating the “Favorite” Status Optimistically
Lecture 257 Storing Orders in the Web
Lecture 258 Fetching Orders & Fixing an Issue
Lecture 259 Using the “FutureBuilder” Widget & Improving the Code
Lecture 260 Wrap Up
Lecture 261 Useful Resources & Links
Section 11: Adding User Authentication [SHOP APP]
Lecture 262 Module Introduction
Lecture 263 How Authentication Works
Lecture 264 Prepare Backend
Lecture 265 Adding the Auth Screen
Lecture 266 Signup Requests & URLs
Lecture 267 Adding User Signup
Lecture 268 Allowing Users to Log In
Lecture 269 Handling Authentication Errors
Lecture 270 Managing the Auth Token Locally (in the App)
Lecture 271 Using the “ProxyProvider” and Attaching the Token to Outgoing Http Requests
Lecture 272 Adding the Token to All Requests
Lecture 273 Connecting the “Favorite” Status to Users
Lecture 274 Attaching Products to Users & Filtering By Creator
Lecture 275 Attaching Orders to Users
Lecture 276 Adding a Logout Functionality
Lecture 277 Automatically Logging Users Out (After Some Time)
Lecture 278 Automatically Logging Users In
Lecture 279 Wrap Up
Lecture 280 Useful Resources & Links
Section 12: Adding Animations [SHOP APP]
Lecture 281 Module Introduction
Lecture 282 Animations From Scratch (Completely Manually Controlled)
Lecture 283 Using the “AnimatedBuilder” Widget
Lecture 284 Working with the “AnimatedContainer”
Lecture 285 More Built-in Animation & Transition Widgets
Lecture 286 Fading Loaded Images In (And Showing a Placeholder)
Lecture 287 Adding a “Hero” Transition
Lecture 288 Working with Slivers
Lecture 289 Practice: Animating Order Boxes
Lecture 290 A Fix for the Latest Version of Flutter
Lecture 291 Implementing Custom Route Transitions
Lecture 292 Wrap Up
Lecture 293 Useful Resources & Links
Section 13: Using Native Device Features (Camera, Maps, Location, …) [GREAT PLACES APP]
Lecture 294 Module Introduction
Lecture 295 Planning the App
Lecture 296 PlaceList & Place Provider Setup
Lecture 297 Adding the “Add Place” Screen & An Image Input
Lecture 298 Using Image Picker & The Device Camera
Lecture 299 Storing the Image on the Filesystem (on the Device)
Lecture 300 Managing Data & Images via the Provider Package
Lecture 301 Handling Errors
Lecture 302 Testing on Real Devices
Lecture 303 Preparing SQLite
Lecture 304 Storing & Fetching Data with SQLite
Lecture 305 Adding a Location Input & The “location” Package
Lecture 306 Fetching the User Coordinates
Lecture 307 Displaying a Static Map Snapshot
Lecture 308 Rendering a Dynamic Map (via Google Maps)
Lecture 309 Allowing Users to Pick a Location on the Map
Lecture 310 Storing the Location in SQLite
Lecture 311 Adding a “Place Detail” Screen & Opening the Map in “readonly” Mode
Lecture 312 Wrap Up
Lecture 313 Useful Resources & Links
Section 14: Firebase, Image Upload, Push Notifications – Building a Chat App
Lecture 314 Module Introduction
Lecture 315 What is Firebase?
Lecture 316 Creating a New App
Lecture 317 Getting Started with Firebase
Lecture 318 Important: Flutter Firebase Versions
Lecture 319 Getting Started with Flutter & the Firebase SDK
Lecture 320 Adding “GoogleServices-Info.plist” correctly to iOS
Lecture 321 Rendering Stream Data with StreamBuilder
Lecture 322 Adding Data
Lecture 323 A Basic Authentication Screen
Lecture 324 Adding an App Theme
Lecture 325 Creating an Authentication Form
Lecture 326 Connecting Auth Form & Auth Screen
Lecture 327 Adding the firebase_auth Package
Lecture 328 Implementing Authentication
Lecture 329 Storing Extra User Data
Lecture 330 Finishing Authentication & Logout
Lecture 331 Adding Firebase Security Rules
Lecture 332 Listening to Chat Messages
Lecture 333 Sending & Ordering Chat Messages
Lecture 334 Creating a Basic Chat Bubble Widget
Lecture 335 Improving the Chat Bubbles
Lecture 336 Testing on Multiple Devices
Lecture 337 Displaying User Names
Lecture 338 ImagePicker: Latest Version
Lecture 339 Adding an Image Picker
Lecture 340 Preparing File Upload & Validating Images
Lecture 341 Uploading Images
Lecture 342 Improving Image Upload
Lecture 343 Running on a Real iOS Device
Lecture 344 Displaying User Images
Lecture 345 How Push Notifications Work
Lecture 346 Adding the firebase_messaging Package
Lecture 347 An Introduction to Firebase Cloud Messaging
Lecture 348 Android & Push Notifications
Lecture 349 iOS & Push Notifications
Lecture 350 Handling Push Notifications
Lecture 351 Getting Started with Firebase Cloud Functions
Lecture 352 MUST READ: Firebase Cloud Functions & Billing
Lecture 353 Setting a Firestore Trigger
Lecture 354 Sending Automated Push Notifications
Lecture 355 Polishing & Wrap Up
Lecture 356 Updating to the latest Firebase Package Versions
Lecture 357 Module Resources
Section 15: Running Native Swift, ObjectiveC, Java or Kotlin Code
Lecture 358 Module Introduction
Lecture 359 Using a Proper Project Setup
Lecture 360 Sending a Method Call from Flutter
Lecture 361 Running Android Code
Lecture 362 Running iOS Code
Lecture 363 Wrap Up
Lecture 364 Useful Resources & Links
Section 16: Publishing to the App Stores
Lecture 365 Module Introduction
Lecture 366 Preparing the Code
Lecture 367 Preparing the App Configuration
Lecture 368 Preparing Third-Party Services
Lecture 369 Adding Icons & Splash Screens
Lecture 370 Publishing Android Apps
Lecture 371 Publishing iOS Apps
Lecture 372 Useful Resources & Links
Section 17: Roundup & Next Steps
Lecture 373 You did it!
Lecture 374 Your Next Steps (To Become an Awesome Developer!)
Lecture 375 How to Plan & Develop Successful Apps
Section 18: Flutter 2 Update
Lecture 376 Flutter 2 – What’s New? What’s The Impact On This Course?
Lecture 377 “Old” vs “New” Button Widgets
Section 19: Roundup
Lecture 378 Course Roundup
Lecture 379 Bonus: More Content!
Beginner and experienced developers who are interested in diving into mobile app development using one language for both platforms,Experienced iOS or Android developers who want to build cross-platform (iOS + Android) apps with one single programming language
Course Information:
Udemy | English | 42h 35m | 20.62 GB
Created by: Academind by Maximilian Schwarzmüller
You Can See More Courses in the Developer >> Greetings from CourseDown.com