What you'll learn
In the 'Mobile App Development' course, dive into the world of mobile app creation using Flutter and Dart. Explore the fundamentals of Flutter, a powerful UI toolkit, and Dart, the programming language optimized for building cross-platform mobile applications. Gain expertise in designing intuitive user interfaces, implementing functionalities, and optimizing app performance. Learn to create seamless and visually appealing mobile experiences for both iOS and Android platforms. By the course end, you'll possess the skills to develop, test, and deploy robust mobile applications, ensuring you're well-equipped to thrive in the dynamic field of mobile app development. Elevate your skills in this ever-evolving technology landscape.
Table of contents
- How Programming Languages Work
- Form Dart To Machine Code
- Starting From Scratch: Understanding Functions
- Importing Features From Packages
- How Flutter Apps Start
- Understanding Widgets
- Using a First Widget & Passing Values to Functions
- Positional & Named Arguments
- Combining Multiple Widgets
- Understanding "const" Values
- Building More Complex Widget Trees
- Understanding Value Types
- Configuring Widgets & Understanding Objects
- Working with "Configuration Objects" (Non-Widget Objects)
- Generics, Lists & Adding Gradient Colors
- How To Configure Widgets & Objects
- Onwards to Custom Widgets: Why Do You Need Them?
- Understanding Classes
- Building Custom Widgets
- Working with Constructor Functions
- Splitting Code Across Files
- Introducing Variables
- Variables & Types - Combining Two Key Concepts
- "final" & "const" - Special Kinds Of "Variables"
- Instance Variables (Properties) & Configurable Widgets
- Displaying Images & Using Multiple Constructor Functions
- Adding Buttons & Using Functions As Values
- Styling Buttons & Working with Padding
- How NOT To Build Interactive Widgets
- Introducing Stateful Widgets
- Generating Random Numbers
- Adding Icons to Buttons
- Adding Transparency to Widgets
- Rendering Content Conditionally
- Accepting & Passing Functions as Values
- The "initState" Method
- Using Ternary Expressions & Comparison Operators
- Understanding "if" Statements
- Adding a Data Model & Dummy Data
- Configuring a Column
- Creating a Reusable, Custom Styled Button
- Accessing List Elements & Object Properties
- Mapping Lists & Using the Spread Operator
- Alignment, Margin & Padding
- Mutating Values in Memory
- Managing The Questions Index As State
- Using Third-Party Packages & Adding Google Fonts
- Passing Data via Functions Across Widgets
- Getting Started with the Results Screen
- Passing Data to the Results Screen
- Introducing Maps & "for" Loops
- Accessing Map Values & Using "Type Casting"
- Combining Columns & Rows
- Filtering & Analyzing Lists
- Making Content Scrollable with SingleChildScrollView
- Starting Setup & Repetition Time!
- Adding an Expense Data Model with a Unique ID & Exploring Initializer Lists
- Introducing Enums
- Creating Dummy Data
- Efficiently Rendering Long Lists with ListView
- Using Lists Inside Of Lists
- Creating a Custom List Item with the Card & Spacer Widgets
- Using Icons & Formatting Dates
- Setting an AppBar with a Title & Actions
- Adding a Modal Sheet & Understanding Context
- Handling User (Text) Input with the TextField Widget
- Getting User Input on Every Keystroke
- Letting Flutter do the Work with TextEditingController
- Closing The Modal Manually
- Showing a Date Picker
- Working with "Futures" for Handling Data from the Future
- Adding a Dropdown Button
- Combining Conditions with AND and OR Operators
- Validating User Input & Showing an Error Dialog
- Creating a Fullscreen Modal
- Using the Dismissible Widget for Dismissing List Items
- Showing & Managing "Snackbars"
- Getting Started with Theming
- Setting & Using a Color Scheme
- Setting Text Themes
- Using Theme Data in Widgets
- Adding Dark Mode
- Using Another Kind of Loop (for-in)
- Adding Alternative Constructor Functions & Filtering Lists
- Adding Chart Widgets
- Setup & Understanding Explicit vs Implicit Animations
- Explicit Animations: Adding an Animation Controller
- Explicit Animations: Playing the Animation with AnimatedBuilder
- Finetuning Explicit Animations
- Getting Started with Implicit Animations
- Configuring Implicit Animations
- Adding Multi-Screen Transitions
- What's a Backend? And Why Would You Want One?
- What Is HTTP & How Does It Work?
- Setting Up a Dummy Backend (Firebase)
- Adding the http Package
- Sending a POST Request to the Backend
- Working with the Request & Waiting for the Response
- Fetching & Transforming Data
- Avoiding Unnecessary Requests
- Managing the Loading State
- Error Response Handling
- Sending DELETE Requests
- Handling the "No Data" Case
- Better Error Handling
- Using the FutureBuilder Widget
- Adding a Place Model
- Adding a "Places" Screen
- Adding an "Add Place" Screen
- Adding "riverpod" & A Provider
- Adding Places with Provider & Displaying Places
- Adding a "Place Details" Screen
- Adding a "Pick an Image" Input
- Installing the "Image Picker" Package
- Using the Device Camera For Taking Pictures
- Adding the Picked Image to the Model & "Add Place" Form
- Previewing the Picked Image
- Adding the "location" Package & Starting with the "Get Location" Input Widget
- Getting the User's Current Location
- Using the Google Maps API - Setup
- Using Google's Geocoding API
- Storing the Location Data in the Model
- Displaying a Location Preview Map Snapshot via Google
- Using the Picked Location in the Form
- Outputting the Location Data
- Installing & Configuring the Google Maps Package
- Adding a "Map" Screen
- Displaying the Picked Place on a Dynamic Map
- Handling Map Taps for Selecting a Location Manually
- Using the Map Screen in the "Add Place" Form
- Installing Packages for Local (On-Device) Data Storage
- Storing the Picked Image Locally
- Storing Place Data in a (On-Device) SQL Database
- Loading Data from the SQL Database
- Using a FutureBuilder for Loading Data
- App & Firebase Setup
- Adding an Authentication Screen
- Adding Buttons & Modes to the Authentication Screen
- Validating User Input
- Firebase CLI & SDK Setup
- Signing Users Up
- Logging Users In
- Showing Different Screens Based On The Authentication State
- Adding a Splash Screen (Loading Screen)
- Adding User Logout
- Image Upload: Setup & First Steps
- Adding a User Image Picker Widget
- Using the ImagePicker Package
- Managing The Selected Image In The Authentication Form
- Uploading Images To Firebase
- Showing a Loading Spinner Whilst Uploading
- Adding a Remote Database: Firestore Setup
- Sending Data to Firestore
- Storing a Username
- Adding ChatMessages & Input Widgets
- Sending & Reading Data To & From Firestore
- Loading & Displaying Chat Messages as a Stream
- Styling Chat Message Bubbles
- Push Notifications - Setup & First Steps
- Requesting Permissions & Getting an Address Token
- Testing Push Notifications
- Working with Notification Topics
- Sending Push Notifications Automatically via Cloud Functions