Learn Flutter and Dart to Build iOS and Android Apps - Second Edition

Video description

This Flutter course is an excellent opportunity to discover the power of Flutter and Dart for creating stunning, high-performance mobile apps on both iOS and Android platforms. The course will provide you with detailed setup instructions for both macOS and Windows; a thorough introduction to Flutter, Dart, and the concept behind widgets; and an overview of the built-in widgets along with instructions on how to add your own.

It will provide you with a strong understanding of the basics of Flutter and Dart, including how to analyze a new Flutter project, import features from packages, use a first widget, and pass values to functions. Additionally, you will learn how to work with constructor functions. You will also learn debugging tips and tricks, page navigation with tabs, side drawers, and stack-based navigation, state management solutions, handling and validating user input, connecting your Flutter app to backend servers by sending HTTP requests, user authentication, adding Google Maps, using native device features such as the camera, adding beautiful animations and page transitions, image upload, and push notifications.

Throughout the course, you will build multiple demo apps that range from simple to more complex. By the end of the course, you will have the skills necessary to build your own iOS and Android apps using Flutter.

What You Will Learn

  • Understand Flutter, Dart, and the concept behind widgets
  • Connect your Flutter app to backend servers by sending HTTP requests
  • Learn to use native device features like the camera
  • Learn to add beautiful animations and page transitions
  • Learn to upload images and send manual/automated push notifications
  • Learn how to add Google Maps to the app

Audience

This course is suitable for both beginner and experienced developers who want to learn mobile app development using a single language for both iOS and Android platforms. It is also ideal for experienced iOS or Android developers looking to build cross-platform apps using a single programming language. Although basic programming knowledge is beneficial, it is not mandatory, and no prior experience in Flutter or Dart is needed. Additionally, no previous experience in iOS (Swift/ObjectiveC) or Android (Java/Kotlin) development is necessary.

About The Author

Academind by Maximilian Schwarzmüller:

Academind GmbH

Bundling the courses and the knowledge of successful instructors, Academind strives to deliver high-quality online education. The platform covers topics such as web development, data analysis, and more in a fun and engaging way.

Maximilian Schwarzmüller

Since the age of 13, he has never stopped learning new programming skills and languages. In his early days, he started creating websites simply for fun. This passion has remained and shaped his decision to work as a freelance web developer and consultant. Although he started web development on the backend (PHP with Laravel and NodeJS), he has progressed to becoming a front-end developer using modern frameworks such as React, Angular, and VueJS 2 in many projects.

The most rewarding experience for him is to see how people find new and better jobs, build exciting web applications, acquire amazing projects, or simply enjoy their hobby with the help of his content.

Table of contents

  1. Chapter 1 : Introduction
    1. Introduction
    2. Welcome to This Course!
    3. What Is Flutter?
    4. Flutter Uses Dart!
    5. One Codebase, Multiple Platforms
    6. Flutter Setup - Overview
    7. Windows Setup
    8. macOS Setup
    9. Project Creation and Setting Up a Code Editor for Flutter Development
    10. Running a First Flutter App
    11. Understanding Material Design
    12. About This Course
  2. Chapter 2 : Flutter and Dart Basics I - Getting a Solid Foundation (Roll Dice App)
    1. Module Introduction
    2. Analyzing a New Flutter Project
    3. Form Dart to Machine Code
    4. How Programming Languages Work
    5. Starting from Scratch: Understanding Functions
    6. Importing Features from Packages
    7. How Flutter Apps Start
    8. Understanding Widgets
    9. Using a First Widget and Passing Values to Functions
    10. Positional and Named Arguments
    11. Combining Multiple Widgets
    12. Understanding "const" Values
    13. Building More Complex Widget Trees
    14. Understanding Value Types
    15. Configuring Widgets and Understanding Objects
    16. Working with "Configuration Objects" (Non-Widget Objects)
    17. Generics, Lists, and Adding Gradient Colors
    18. How to Configure Widgets and Objects
    19. Practice: Styling Text
    20. Onward to Custom Widgets: Why Do You Need Them?
    21. Understanding Classes
    22. Building Custom Widgets
    23. Working with Constructor Functions
    24. Splitting Code Across Files
    25. Practice: Create a Custom Widget
    26. Introducing Variables
    27. Variables and Types - Combining Two Key Concepts
    28. "final" and "const" - Special Kinds of "Variables"
    29. Instance Variables (Properties) and Configurable Widgets
    30. Practice: Reusable Widgets and Constructor Functions
    31. Displaying Images and Using Multiple Constructor Functions
    32. Adding Buttons and Using Functions As Values
    33. Styling Buttons and Working with Padding
    34. How NOT to Build Interactive Widgets
    35. Introducing Stateful Widgets
    36. Generating Random Numbers
    37. Module Summary
  3. Chapter 3 : Flutter and Dart Basics II - Fundamentals Deep Dive (Quiz App)
    1. Module Introduction
    2. A Challenge for You!
    3. Challenge Solution 1/2 - Creating a Widget
    4. Challenge Solution 2/2 - Working with More Widgets
    5. Adding Icons to Buttons
    6. Adding Transparency to Widgets
    7. Repetition and Exercise: Adding a Stateful Widget
    8. Rendering Content Conditionally
    9. Accepting and Passing Functions as Values
    10. The "initState" Method
    11. Using Ternary Expressions and Comparison Operators
    12. if Statements and Comparison Operators
    13. Adding a Data Model and Dummy Data
    14. Configuring a Column
    15. Creating a Reusable, Custom Styled Button
    16. Accessing List Elements and Object Properties
    17. Mapping Lists and Using the Spread Operator
    18. Alignment, Margin, and Padding
    19. Mutating Values in Memory
    20. Managing the Questions Index as State
    21. More on Button Styling
    22. Using Third-Party Packages and Adding Google Fonts
    23. Passing Data Through Functions Across Widgets
    24. More Conditions
    25. Getting Started with the Results Screen
    26. Passing Data to the Results Screen
    27. Introducing Maps and "for" Loops
    28. Accessing Map Values and Using "Type Casting"
    29. Combining Columns and Rows
    30. Expanded to the Rescue!
    31. Filtering and Analyzing Lists
    32. Making Content Scrollable with SingleChildScrollView
    33. Flutter and Dart Basics - Coding Challenge
    34. Flutter and Dart Basics - Solution
    35. Beyond the Basics: Optional, Important Dart Features
    36. Module Summary
  4. Chapter 4 : Debugging Flutter Apps
    1. Module Introduction
    2. The Starting Project and a Problem
    3. Understanding Error Messages
    4. Debugging Apps and Using "Debug Mode"
    5. Working with the Flutter DevTools
  5. Chapter 5 : Adding Interactivity, More Widgets, and Theming (Expense Tracker App)
    1. Module Introduction
    2. Starting Setup and Repetition Time!
    3. Adding an Expense Data Model with a Unique ID and Exploring Initializer Lists
    4. Introducing Enums
    5. Creating Dummy Data
    6. Efficiently Rendering Long Lists with ListView
    7. Using Lists Inside of Lists
    8. Creating a Custom List Item with the Card and Spacer Widgets
    9. Using Icons and Formatting Dates
    10. Setting an AppBar with a Title and Actions
    11. Adding a Modal Sheet and Understanding Context
    12. Handling User (Text) Input with the TextField Widget
    13. Getting User Input on Every Keystroke
    14. Letting Flutter do the Work with TextEditingController
    15. Time to Practice: Adding a New Input
    16. Exercise Solution
    17. Closing the Modal Manually
    18. Showing a Date Picker
    19. Working with "Futures" for Handling Data from the Future
    20. Adding a Dropdown Button
    21. Combining Conditions with AND and OR Operators
    22. Validating User Input and Showing an Error Dialog
    23. Saving New Expenses
    24. Creating a Fullscreen Modal
    25. Using the Dismissible Widget for Dismissing List Items
    26. Showing and Managing "Snackbars"
    27. Getting Started with Theming
    28. Setting and Using a Color Scheme
    29. Setting Text Themes
    30. Using Theme Data in Widgets
    31. Adding Dark Mode
    32. Using Another Kind of Loop (for-in)
    33. Adding Alternative Constructor Functions and Filtering Lists
    34. Adding Chart Widgets
    35. Module Summary
  6. Chapter 6 : Building Responsive and Adaptive User Interfaces (Expense Tracker App)
    1. Module Introduction
    2. What Is "Responsiveness"?
    3. Locking the Device Orientation
    4. Updating the UI Based on the Available Space
    5. Understanding Size Constraints
    6. Handling to Screen Overlays Like the Soft Keyboard
    7. Understanding "Safe Areas"
    8. Using the LayoutBuilder Widget
    9. Building Adaptive Widgets
    10. Module Summary
  7. Chapter 7 : Flutter and Dart Internals (Todo App)
    1. Module Introduction
    2. Three Trees: Widget Tree, Element Tree, and Render Tree
    3. How the UI Is Updated
    4. Refactor and Extract Widgets to Avoid Unnecessary Builds
    5. Understanding Keys - Setup
    6. Which Problem Do Keys Solve?
    7. Understanding and Using Keys
    8. Mutating Values in Memory and Making Sense of var, final, and const
    9. Module Summary
  8. Chapter 8 : Building Multi-Screen Apps and Navigating Between Screens (Meals App)
    1. Module Introduction
    2. Project Setup
    3. Using a GridView
    4. Widgets Versus Screens
    5. Displaying Category Items on a Screen
    6. Making Any Widget Tappable with Inkwell
    7. Adding Meals Data
    8. Loading Meals Data into a Screen
    9. Adding Cross-Screen Navigation
    10. Passing Data to the Target Screen
    11. Introducing the Stack Widget
    12. Improving the MealItem Widget
    13. Adding Navigation to the MealDetails Screen
    14. Improving the MealDetails Screen
    15. Adding Tab-Based Navigation
    16. Passing Functions Through Multiple Layers of Widgets (For State Management)
    17. Managing App-Wide State and Data
    18. Adding a Side Drawer
    19. Closing the Drawer Manually
    20. Adding a Filter Item
    21. Replacing Screens (Instead of Pushing)
    22. Adding More Filter Options
    23. Returning Data When Leaving a Screen
    24. Reading and Using Returned Data
    25. Applying Filters
    26. Module Summary
  9. Chapter 9 : Managing App-Wide State (Meals App)
    1. Module Introduction
    2. What's the Problem?
    3. Installing the Solution: Riverpod
    4. How State Management with Riverpod Works
    5. Creating a Provider
    6. Using a Provider
    7. Creating a More Complex Provider with StateNotifier
    8. Using the FavoritesProvider
    9. Triggering a Notifier Method
    10. Getting Started with Another Provider
    11. Combining Local and Provider-Managed State
    12. Outsourcing State into the Provider
    13. Connecting Multiple Providers with Each Other (Dependent Providers)
    14. Swapping the "Favorite Button" Based on Provider State
    15. Module Summary
  10. Chapter 10 : Adding Animations (Meals App)
    1. Module Introduction
    2. Setup and Understanding Explicit Versus Implicit Animations
    3. Explicit Animations: Adding an Animation Controller
    4. Explicit Animations: Playing the Animation with AnimatedBuilder
    5. Finetuning Explicit Animations
    6. Getting Started with Implicit Animations
    7. Configuring Implicit Animations
    8. Adding Multi-Screen Transitions
    9. Module Summary
  11. Chapter 11 : Handling User Input and Working with Forms (Shopping List App)
    1. Module Introduction
    2. Setup and a Challenge for You
    3. Challenge Solution 1 - Building and Using Models
    4. Challenge Solution 2 - Building the List UI
    5. Adding a "New Item" Screen
    6. The Form and TextFormField Widgets
    7. A Form-Aware Dropdown Button
    8. Adding Buttons to a Form
    9. Adding Validation Logic
    10. Getting Form Access Through a Global Key
    11. Extracting Entered Values
    12. Passing Data Between Screens
    13. Final Challenge Solution
    14. Module Summary
  12. Chapter 12 : Connecting a Backend and Sending HTTP Requests (Shopping List App)
    1. Module Introduction
    2. What's a Backend? And Why Would You Want One?
    3. What Is HTTP and How Does It Work?
    4. Setting Up a Dummy Backend (Firebase)
    5. Adding the HTTP Package
    6. Sending a POST Request to the Backend
    7. Working with the Request and Waiting for the Response
    8. Fetching and Transforming Data
    9. Avoiding Unnecessary Requests
    10. Managing the Loading State
    11. Error Response Handling
    12. Sending DELETE Requests
    13. Handling the "No Data" Case
    14. Better Error Handling
    15. Module Summary
    16. Using the FutureBuilder Widget
  13. Chapter 13 : Using Native Device Features (For Example, Camera) (Favorite Places App)
    1. Module Introduction
    2. Setup and a Challenge for You!
    3. Adding a Place Model (Challenge Solution 1/6)
    4. Adding a "Places" Screen (Challenge Solution 2/6)
    5. Adding an "Add Place" Screen (Challenge Solution 3/6)
    6. Adding "riverpod" and a Provider (Challenge Solution 4/6)
    7. Adding Places with Provider and Displaying Places (Challenge Solution 5/6)
    8. Adding a "Place Details" Screen (Challenge Solution 6/6)
    9. Adding a "Pick an Image" Input
    10. Installing the "Image Picker" Package
    11. Using the Device Camera for Taking Pictures
    12. Adding the Picked Image to the Model and "Add Place" Form
    13. Previewing the Picked Image
    14. Adding the "location" Package and Starting with the "Get Location" Input Widget
    15. Getting the User's Current Location
    16. Using the Google Maps API – Setup
    17. Using Google's Geocoding API
    18. Storing the Location Data in the Model
    19. Displaying a Location Preview Map Snapshot Through Google
    20. Using the Picked Location in the Form
    21. Outputting the Location Data
    22. Installing and Configuring the Google Maps Package
    23. Adding a "Map" Screen
    24. Displaying the Picked Place on a Dynamic Map
    25. Handling Map Taps for Selecting a Location Manually
    26. Using the Map Screen in the "Add Place" Form
    27. Installing Packages for Local (On-Device) Data Storage
    28. Storing the Picked Image Locally
    29. Storing Place Data in a (On-Device) SQL Database
    30. Loading Data from the SQL Database
    31. Using a FutureBuilder for Loading Data
    32. Module Summary
  14. Chapter 14 : Push Notifications and More: Building a Chat App with Flutter and Firebase
    1. Module Introduction
    2. App and Firebase Setup
    3. Adding an Authentication Screen
    4. Adding Buttons and Modes to the Authentication Screen
    5. Validating User Input
    6. Firebase CLI and SDK Setup 1/2
    7. Firebase CLI and SDK Setup 2/2
    8. Signing Users Up
    9. Logging Users In
    10. Showing Different Screens Based on the Authentication State
    11. Adding a Splash Screen (Loading Screen)
    12. Adding User Logout
    13. Image Upload: Setup and First Steps
    14. Adding a User Image Picker Widget
    15. Using the ImagePicker Package
    16. Managing the Selected Image in the Authentication Form
    17. Uploading Images to Firebase
    18. Showing a Loading Spinner Whilst Uploading
    19. Adding a Remote Database: Firestore Setup
    20. Sending Data to Firestore
    21. Storing a Username
    22. Adding ChatMessages and Input Widgets
    23. Sending and Reading Data to and from Firestore
    24. Loading and Displaying Chat Messages as a Stream
    25. Styling Chat Message Bubbles
    26. Push Notifications - Setup and First Steps
    27. Requesting Permissions and Getting an Address Token
    28. Testing Push Notifications
    29. Working with Notification Topics
    30. Sending Push Notifications Automatically Through Cloud Functions
    31. Module Summary
  15. Chapter 15 : Next Steps and Roundup
    1. Course Roundup

Product information

  • Title: Learn Flutter and Dart to Build iOS and Android Apps - Second Edition
  • Author(s): Academind by Maximilian Schwarzmüller
  • Release date: May 2023
  • Publisher(s): Packt Publishing
  • ISBN: 9781805122029