Learn Flutter and Dart to Build iOS and Android Apps 2020

Video Description

A complete guide to the Flutter SDK and Flutter framework to build native iOS and Android apps

About This Video

  • Build engaging native mobile apps for both Android and iOS
  • Use features such as Google Maps, the device camera, authentication, and much more!

In Detail

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 that provides 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) you can use to compose your user interfaces. Flutter is trending, and gets used for major Google apps such as Adwords. It's now marked as "ready for production" so now is the time to jump in and learn it!

This course will teach you Flutter and Dart from scratch. 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 such as buttons, switches, forms, toolbars, lists, and more—or simply build your own widgets—Flutter makes that a breeze too. You're interested in building real native mobile apps for the two most popular mobile platforms - iOS and Android. You want to explore the full set of features Flutter offers. Don't want to spend hours learning two completely different languages

Table of Contents

  1. Chapter 1 : Introduction
    1. Introduction 00:01:25
    2. What is Flutter? 00:05:54
    3. Understanding the Flutter Architecture 00:04:48
    4. How Flutter & Dart Code Gets Compiled to Native Apps 00:03:13
    5. Understanding Flutter Versions 00:02:50
    6. Flutter macOS Setup 00:18:50
    7. macOS Development Environment 00:04:08
    8. Flutter Windows Setup 00:20:12
    9. Windows Development Environment 00:03:45
    10. Flutter & Material Design 00:01:16
    11. Flutter Alternatives 00:06:07
    12. Course Outline 00:06:40
    13. How to Get the Most Out of The Course? 00:01:24
  2. Chapter 2 : Flutter Basics [QUIZ APP]
    1. Module Introduction 00:02:25
    2. Creating a New Project 00:12:15
    3. An Overview of the Generated Files & Folders 00:08:21
    4. Analyzing the Default App 00:05:32
    5. Dart Basics 00:17:18
    6. More Dart Basics 00:13:06
    7. Building an App from Scratch 00:11:03
    8. Running the App on an Emulator 00:03:26
    9. Class Constructors & Named Arguments 00:08:29
    10. First Summary & Additional Syntax 00:08:11
    11. Building a Widget Tree 00:07:40
    12. Visible (Input / Output) & Invisible (Layout / Control) Widgets 00:03:13
    13. Adding Layout Widgets 00:06:52
    14. Connecting Functions & Buttons 00:07:31
    15. Anonymous Functions 00:03:21
    16. Updating Widget Data (Or: Using StatelessWidget Incorrectly) 00:06:37
    17. Updating Correctly with Stateful Widgets 00:11:58
    18. A Brief Look Under the Hood 00:02:28
    19. Using Private Properties 00:05:17
    20. Creating a New, Custom Widget 00:11:50
    21. First Styling & Layouting Steps 00:08:02
    22. Enums & Multiple Constructors 00:04:07
    23. Official Docs & The Widget Catalog 00:02:39
    24. Passing Callback Functions Around 00:10:39
    25. Introducing Maps 00:05:53
    26. Mapping Lists to Widgets 00:10:24
    27. final vs const 00:10:50
    28. Introducing "if" Statements 00:06:52
    29. [DART DEEP DIVE] More on "if" Statements 00:11:15
    30. [DART DEEP DIVE] The "null" Value 00:02:03
    31. Outputting Widgets Conditionally 00:02:21
    32. Splitting the App into Widgets 00:09:57
    33. Calculating a Total Score 00:07:46
    34. Getters & "else-if" 00:06:34
    35. Resetting the Quiz 00:04:54
    36. Wrap Up 00:01:53
  3. Chapter 3 : Running Apps on Different Devices & Debugging Apps
    1. Module Introduction 00:02:00
    2. Running the App on a Real Android Device 00:03:56
    3. Running the App on an iOS Emulator 00:05:54
    4. Running the App on a Real iOS Device 00:01:53
    5. Working with the Emulators / Using the Emulators 00:02:26
    6. Understanding Error Messages & Fixing Errors 00:05:27
    7. Using the Debugger 00:06:22
    8. Getting Started with the Dart DevTools 00:04:55
    9. Understanding the Repaint Rainbow 00:03:24
    10. Wrapping up the Dart DevTools 00:01:35
  4. Chapter 4 : Widgets, Styling, Adding Logic - Building a Real App [PERSONAL EXPENSES APP]
    1. Module Introduction 00:03:20
    2. An Overview of the Core Flutter Widgets 00:09:43
    3. Planning the App 00:02:43
    4. Combining Widgets 00:09:19
    5. Understanding Column Alignment 00:06:11
    6. Not a Widget: Adding a Transaction Model & Transaction Data 00:08:28
    7. Mapping Data into Widgets 00:03:40
    8. Building a Custom List Item 00:05:26
    9. Styling a Container 00:05:12
    10. Styling Text 00:02:46
    11. More Styling! 00:01:56
    12. Containers vs Columns vs Rows 00:03:38
    13. Using String Interpolation 00:05:22
    14. Installing External Packages & Formatting Dates 00:07:30
    15. Adding Text Input Widgets (TextField) 00:09:41
    16. Fetching User Input 00:09:19
    17. Splitting the App into Widgets 00:12:45
    18. Connecting Widgets & Managing Data / State 00:06:33
    19. Adding User Transactions to the List 00:03:58
    20. Making the List Scrollable! 00:06:11
    21. Working with ListViews 00:12:02
    22. Further Input & Output Styling and Configuration 00:08:28
    23. Adding AppBar Buttons & Floating Action Buttons 00:04:33
    24. Showing a Modal Bottom Sheet 00:09:33
    25. Improving & Styling the Modal Bottom Sheet 00:05:03
    26. Configuring & Using Themes 00:08:42
    27. Custom Fonts & Working with Text Themes 00:11:07
    28. Adding Images to the App 00:07:57
    29. Planning the Chart Widget 00:04:23
    30. Looping Through Lists 00:13:48
    31. Deriving Recent Transactions 00:07:25
    32. Creating Bars for our Chart 00:10:59
    33. Populating the Chart with Values 00:06:19
    34. Finishing the Chart Bars 00:05:26
    35. Flexible & Expanded: Deep Dive 00:10:23
    36. Adding a ListTile Widget 00:05:28
    37. Improving the Overall Chart 00:03:09
    38. Widgets & Configuring Widgets - Summary / Overview 00:05:08
    39. Getting Started with Date Selection 00:05:19
    40. Showing a DatePicker 00:11:14
    41. Adding Transactions with a Date 00:03:07
    42. Deleting Transactions & Using IconButtons 00:07:03
    43. Final Polishing! 00:05:34
    44. Wrap Up 00:03:54
  5. Chapter 5 : Responsive & Adaptive User Interfaces and Apps
    1. Module Introduction 00:01:37
    2. What does "Responsive" and "Adaptive" Mean? 00:05:56
    3. Examples: Where we could improve the App! 00:03:04
    4. Calculating Sizes Dynamically 00:09:14
    5. Using the LayoutBuilder Widget 00:07:44
    6. Controlling the Device Orientation 00:03:22
    7. Rendering Alternative Landscape Content - 1 00:04:42
    8. Finishing Landscape Mode 00:02:58
    9. Showing Different Content Based on Device Orientation 00:05:34
    10. Respecting the Softkeyboard Insets 00:03:43
    11. Using the Device Size in Conditions 00:04:10
    12. Managing the MediaQuery Object 00:02:07
    13. Checking the Device Platform 00:05:37
    14. Using Cupertino (iOS) Widgets 00:09:06
    15. Using the SafeArea 00:01:43
    16. More Cupertino Styles 00:03:10
    17. Using Cupertino Buttons 00:03:11
    18. Creating Custom Adaptive Widgets 00:05:04
    19. Wrap Up 00:01:44
  6. Chapter 6 : Widget & Flutter Internals - Deep Dive
    1. Module Introduction 00:02:32
    2. The Problem at Hand 00:03:14
    3. Widget Tree & Element Tree - What, Why and How? 00:10:45
    4. How Flutter Rebuilds & Repaints the Screen 00:08:48
    5. How Flutter Executes build () 00:09:18
    6. Using "const" Widgets & Constructors 00:11:17
    7. Writing Good Code 00:03:58
    8. Extracting Widgets 00:06:07
    9. Using Builder Methods 00:10:22
    10. Understanding the Widget Lifecycle 00:12:55
    11. Understanding the App Lifecycle 00:09:26
    12. Understanding Context 00:06:47
    13. A Problem with Lists & Stateful Widgets 00:05:34
    14. Understanding the Problem Root 00:05:10
    15. Using Keys 00:11:16
    16. Wrap Up 00:01:42
  7. Chapter 7 : Navigation & Multiple Screens [MEALS APP]
    1. Module Introduction 00:02:23
    2. Planning the App 00:04:45
    3. Starting with The App - Adding Base Data 00:11:18
    4. Creating a Grid & Working with Linear Gradients 00:07:49
    5. Registering a Screen as the Main Screen 00:03:11
    6. Styling & Theming 00:07:05
    7. Navigating to a New Page 00:10:11
    8. Passing Data via the Constructor 00:02:39
    9. Using Named Routes & Passing Data with Named Routes 00:06:43
    10. Diving Deeper into Named Routes 00:02:46
    11. Adding a Meal Model & Data 00:12:44
    12. Selecting Meals for a Chosen Category 00:04:56
    13. Displaying Recipe Items & Using Network Images 00:15:00
    14. Finishing the Meal List Item 00:15:22
    15. Navigating to the Meal Detail Page 00:07:17
    16. onGenerateRoute & onUnknownRoute 00:05:28
    17. Finishing the Meal Detail Page 00:17:35
    18. Adding a TabBar to the Appbar 00:10:26
    19. Adding a Bottom TabBar 00:13:13
    20. Adding a Custom Drawer 00:12:38
    21. Adding Links to the Drawer 00:04:04
    22. Replacing Pages (Instead of Pushing) 00:04:22
    23. Popping Pages & Passing Data Back 00:17:07
    24. Adding Filter Switches 00:08:32
    25. Adding Filtering Logic 00:16:20
    26. Adding a "Mark as Favorite" Feature 00:19:58
    27. A Problem! 00:02:40
    28. Wrap Up 00:02:55
  8. Chapter 8 : State Management [SHOP APP]
    1. Module Introduction 00:02:13
    2. Planning the App 00:06:55
    3. Defining a Data Model 00:06:32
    4. Working on the "Products" Grid & Item Widgets 00:16:24
    5. Styling & Theming the App 00:05:14
    6. Adding Navigation to the App 00:10:31
    7. Why State Management? And what is "State" and "State Management"? 00:06:30
    8. Understanding the "Provider" Package & Approach 00:02:56
    9. Working with Providers & Listeners 00:19:44
    10. [DART DEEP DIVE] Inheritance ("extends") vs Mixins ("with") 00:06:22
    11. Listening in Different Places & Ways 00:05:59
    12. Using Nested Models & Providers 00:14:03
    13. Exploring Alternative Provider Syntaxes 00:04:42
    14. Using "Consumer" instead of "Provider.of" 00:07:25
    15. Local State vs App-wide State 00:15:40
    16. Adding Shopping Cart Data 00:08:40
    17. Working with Multiple Providers 00:03:04
    18. Connecting the Cart Provider 00:11:32
    19. Working on the Shopping Cart & Displaying a Total 00:11:38
    20. Displaying a List of Cart Items 00:11:17
    21. Making Cart Items Dismissible 00:08:48
    22. Adding Product Detail Data 00:04:50
    23. Providing an Orders Object 00:07:06
    24. Adding Orders 00:02:48
    25. Adding an Orders Screen 00:08:12
    26. Using a Side Drawer 00:05:46
    27. Making Orders Expandable & Stateful Widgets vs Providers 00:10:30
    28. Wrap Up 00:03:30
  9. Chapter 9 : Working with User Input & Forms [SHOP APP]
    1. Module Introduction 00:03:02
    2. Snackbars & Undoing "Add to Cart" Actions 00:10:31
    3. Showing Alert Dialogs 00:07:12
    4. Adding a "Manage Products" Page 00:14:16
    5. "Edit Product" Screen & A Problem 00:05:06
    6. Using Forms & Working with Form Inputs 00:07:59
    7. Managing Form Input Focus 00:04:36
    8. Multiline Inputs & Disposing Objects 00:04:12
    9. Image Input & Image Preview 00:13:16
    10. Submitting Forms 00:12:01
    11. Validating User Input 00:04:14
    12. Adding Validation to All Inputs 00:09:50
    13. Saving New Products 00:03:52
    14. Time to Update Products! 00:16:20
    15. Allowing Users to Delete Products 00:03:39
    16. Wrap Up 00:00:54
  10. Chapter 10 : Sending Http Requests [SHOP APP]
    1. Module Introduction 00:02:05
    2. On-Device vs Web Storage 00:04:09
    3. How to Connect Flutter to a Database 00:03:36
    4. Preparing Our Backend 00:04:31
    5. How to Send Http Requests 00:05:56
    6. Sending POST Requests 00:10:56
    7. Working with Futures in Dart 00:07:36
    8. [DART DEEP DIVE] Futures & Async Code 00:09:27
    9. Showing a Loading Indicator 00:07:00
    10. Handling Errors Gracefully 00:12:12
    11. Working with "async" & "await" 00:09:52
    12. Fetching Data, initState & "of(context)" 00:08:28
    13. How to Transform Fetched Data 00:07:38
    14. Implementing Pull-to-Refresh 00:04:12
    15. Updating Data via PATCH Requests 00:06:36
    16. Utilizing Optimistic Updating 00:08:07
    17. Creating Custom Exceptions & More Error Handling 00:09:06
    18. A Challenge for You! 00:01:49
    19. Updating the "Favorite" Status Optimistically 00:06:39
    20. Storing Orders in the Web 00:11:29
    21. Fetching Orders & Fixing an Issue 00:12:22
    22. Using the "FutureBuilder" Widget & Improving the Code 00:10:06
    23. Wrap Up 00:01:55
  11. Chapter 11 : Adding User Authentication [SHOP APP]
    1. Module Introduction 00:01:45
    2. How Authentication Works 00:05:46
    3. Prepare Backend 00:03:39
    4. Adding the Auth Screen 00:15:49
    5. Adding User Signup 00:13:33
    6. Allowing Users to Log In 00:06:03
    7. Handling Authentication Errors 00:13:11
    8. Managing the Auth Token Locally (in the App) 00:11:07
    9. Using the "ProxyProvider" and Attaching the Token to Outgoing Http Requests 00:09:04
    10. Adding the Token to All Requests 00:08:32
    11. Connecting the "Favorite" Status to Users 00:10:18
    12. Attaching Products to Users & Filtering by Creator 00:13:26
    13. Attaching Orders to Users 00:02:56
    14. Adding a Logout Functionality 00:04:19
    15. Automatically Logging Users Out (After Some Time) 00:05:26
    16. Automatically Logging Users In 00:18:19
    17. Wrap Up 00:01:36
  12. Chapter 12 : Adding Animations [SHOP APP]
    1. Module Introduction 00:01:26
    2. Animations from Scratch (Completely Manually Controlled) 00:14:03
    3. Using the "AnimatedBuilder" Widget 00:03:51
    4. Working with the "AnimatedContainer" 00:02:48
    5. More Built-in Animation & Transition Widgets 00:09:12
    6. Fading Loaded Images In (And Showing a Placeholder) 00:03:36
    7. Adding a "Hero" Transition 00:02:36
    8. Working with Slivers 00:05:56
    9. Practice: Animating Order Boxes 00:04:01
    10. Implementing Custom Route Transitions 00:09:50
    11. Wrap Up 00:00:54
  13. Chapter 13 : Using Native Device Features (Camera, Maps, Location, ...) [GREAT PLACES APP]
    1. Module Introduction 00:01:35
    2. Planning the App 00:03:24
    3. PlaceList & Place Provider Setup 00:12:45
    4. Adding the "Add Place" Screen & An Image Input 00:17:16
    5. Using Image Picker & The Device Camera 00:11:02
    6. Storing the Image on the Filesystem (on the Device) 00:09:12
    7. Managing Data & Images via the Provider Package 00:15:32
    8. Handling Errors 00:01:23
    9. Testing on Real Devices 00:04:38
    10. Preparing SQLite 00:12:33
    11. Storing & Fetching Data with SQLite 00:11:49
    12. Adding a Location Input & The "location" Package 00:09:45
    13. Fetching the User Coordinates 00:02:30
    14. Displaying a Static Map Snapshot 00:08:32
    15. Rendering a Dynamic Map (via Google Maps) 00:13:55
    16. Allowing Users to Pick a Location on the Map 00:09:44
    17. Storing the Location in SQLite 00:18:10
    18. Adding a "Place Detail" Screen & Opening the Map in "readonly" Mode 00:11:33
    19. Wrap Up 00:01:49
  14. Chapter 14 : Running Native Swift, ObjectiveC, Java or Kotlin Code
    1. Module Introduction 00:01:30
    2. Sending a Method Call from Flutter 00:08:34
    3. Running Android Code 00:15:02
    4. Running iOS Code 00:10:25
    5. Wrap Up 00:00:58
  15. Chapter 15 : Publishing to the App Stores
    1. Module Introduction 00:01:43
    2. Preparing the Code 00:02:24
    3. Preparing the App Configuration 00:05:53
    4. Preparing Third-Party Services 00:01:19
    5. Adding Icons & Splash Screens 00:09:08
    6. Publishing Android Apps 00:08:47
    7. Publishing iOS Apps 00:06:12
  16. Chapter 16 : Roundup & Next Steps
    1. You did it! 00:01:12
    2. Your Next Steps (To Become an Awesome Developer!) 00:02:58
    3. How to Plan & Develop Successful Apps 00:10:47

Product Information

  • Title: Learn Flutter and Dart to Build iOS and Android Apps 2020
  • Author(s): Maximilian Schwarzmüller
  • Release date: November 2018
  • Publisher(s): Packt Publishing
  • ISBN: 9781789951998