Flutter Development Bootcamp with Dart
Officially created in collaboration with the Google Flutter team.
What you'll learn
- Build beautiful, fast and native-quality apps with Flutter
- Build iOS and Android apps with just one codebase
- Build a portfolio of beautiful Flutter apps to impress any recruiter
- Build a portfolio of beautiful Flutter apps to impress any recruiter
- Become a fully-fledged Flutter developer
- Build iOS and Android apps using just one programming language (Dart)
- Understand all the fundamental concepts of Flutter development
Course Content
Introduction to Cross-Platform Development with Flutter and Dart
- Introduction to the Course
- Download the Course Syllabus
- What is Flutter?
- Why Flutter?D
- The Anatomy of a Flutter App
- How to Watch the Course in High Definition
- How to Get the Most Out of the Course
- Join the Student Community
Setup and Installation
- Prerequisites for Flutter Development
- Overview of the Process
- Windows Setup Step 1 - Install the Flutter SDK
- Windows Setup Step 2 - Install Android Studio
- Windows Setup Step 3 - Install the Android Emulator
- Windows Installation Troubleshooting
How to Create Flutter Apps From Scratch
- Creating a New Flutter Project from Scratch
- A quick note about Hot Reload
- Scaffolding a Flutter App
- Working with Assets in Flutter & the Pubspec file
- How to Add App Icons to the iOS and Android Apps
- How to Ace this Course
Running Your App on a Physical Device
- Deploying Your Flutter Apps to a Physical Device
- Deploying Flutter Apps to an Android Phone
- Deploying Flutter Apps to iPhones/iPads
- Tip from Fash - Habit Building with the Calendar Trick
- Feedback Time!
I Am Poor - App Challenge
- What are App Challenges?
- The I Am Poor Challenge
- Show Off Your Work!
- Tip from Fash - Dealing with Distractions
- Do You Want This?
- Feedback Time!
MiCard - How to Build Beautiful UIs with Flutter Widgets
- MiCard - A Single Screen Personal Business Card App
- Hot Reload and Hot Restart - Flutter Power Tools
- How to Use Container Widgets
- How to use Column & Row Widgets for Layout
- Flutter Layouts Challenge
- Tapping into Widget Properties
- Incorporating Custom Fonts in Your Flutter App
- Flutter Card & ListTile Widgets
- Download the Completed Project
- Tip from Fash - Nothing Easy is Worth Doing!
- Feedback Time!
Dicee - Building Apps with State
- Dicee - A Stateful Dice App
- Using the Expanded Widget to Create Flexible Layouts
- How to Use Intention Actions
- How to use Column & Row Widgets for Layout
- Adding Gesture Detection with Flutter Button Widges
- [Dart] Functions - Part 1
- Making the Dice Image Change Reactively
- [Dart] Variables
- [Dart] Data Types
- Stateful vs. Stateless Widgets - What's the Difference?
- Randomising the Dice
- Randomising the Dice
- Challenge 1 Solution
- Challenge 2 Solution
- Challenge 3 Solution
- Download the Completed Project
- Tip from Fash - How to Deal with Procrastination
- Feedback Time!
Boss Level Challenge 1 - Magic 8 Ball
- Magic 8 Ball - A Decision Making App
- Step 1 - Set Up The Project
- Step 2 - Create a Stateless Widget
- Step 3 - Create a Stateful Widget
- Step 4 - Make it Interactive
- Step 5 - Randomise it
- Step 6 - Update the State
- Customise It!
- Tip from Fash - Building a Programming Habit
- Feedback Time!
Xylophone - Using Flutter and Dart Packages to Speed Up Development
- Xylophone - A Simple Musical Instrument App
- What are Flutter & Dart Packages?
- How to Play Sound Across Platforms
- How to Play Multiple Sounds
- [Dart] Functions - Part 2
- Updating the UI of Our App
- [Dart] Functions - Part 3
- [Dart] Functions Challenge
- Refactoring Our App
- [Dart] Arrow Functions
- Customise It!
- Download the Completed Project
- Tip from Fash - The 20 Minute Method
- Feed Back
Quizzler -Modularising & Organising Flutter Code
- Quizzler - A True/False Quiz App
- Building a Score Keeper
- Building a Score Keeper
- [Dart] Lists
- Displaying the Questions
- Checking User Answers
- [Dart] Conditionals - IF/ELSE
- More Dart Programming Challenges
- Creating a Question Class
- [Dart] Classes and Objects
- Abstraction in Action
- Encapsulation in Action
- Inheritance in Action
- Polymorphism in Action
- Adding Back the Score Keeper
- Code Challenge
- [Dart] Class Constructors
- Download the Completed Project
- Tip from Fash - Learning Before you Eat
- Feedback Time!
Boss Level Challenge 2 - Destini
- Destini - A Choose Your Own Adventure Game
- Set Up the Project
- Familiarise Yourself with the Starting Project
- Step 1 - Adding a Image as a Background
- Solutions on GitHub
- Step 2/3/4 - Create a New Story Class
- Step 5/6/7 - Create the Story Brain
- Display the Story in the App
- Step 11/12/13/14 - Display the Choices in the App
- Update the Story Based on User Choice
- Step 21 - Use the Story Plan to Progress through the Story
- Step 22/23/24 - Restart the Game When the User Reaches the End
- Step 25 - Renaming and Refactoring Using Android Studio
- Download the Completed App!
- Tip from Fash - Retrieval is How You Learn
- Feedback Time!
BMI Calculator - Building Flutter UI for Intermediates
- BMI Calculator - A Beautiful Health App
- How to Use Flutter Themes
- How to Refactor Flutter Widgets
- [Dart] Final vs. Const
- Creating Custom Flutter Widgets
- The GestureDetector Widget
- Step 5/6/7 - Create the Story Brain
- [Dart] Enums
- [Dart] Ternary Operator
- Update the Story Based on User Choice
- [Dart] Functions as First Order Objects
- The Flutter Slider Widget
- Customising Widgets with Themes
- Composition vs. Inheritance - Building Flutter Widgets From Scratch
- Multi-Screen Apps Using Routes and Navigation
- Composition vs. Inheritance - Building Flutter Widgets From Scratch
- [Dart] Maps
- Designing the Result Page
- Adding the BMI Calculator Functionality
- Download the Completed Project
- Tip from Fash - Dealing with Lack of Progress
- Feedback Time!
Clima - Powering Your Flutter App with Live Web Data
- Clima - A Modern Weather App
- Getting Location Data From Across Platforms
- [Dart] Futures, Async & Await
- [Dart] Final vs. Const
- Stateful Widget Lifecycle Methods
- [Dart] Exception Handling & Null Aware Operators
- Async/Await Challenge
- Application Programming Interfaces (APIs) Explained
- Networking in Flutter Apps with the HTTP Package
- JSON Parsing and Dynamic Types
- Getting Actual Weather Data from the OpenWeatherMap API
- Showing a Spinner While the User Waits
- Passing Data to a State Object
- Updating the Weather with the WeatherModel
- Refactoring the Location Methods
- Creating and Styling a TextField Widget for Text Entry
- Passing Data Backwards Through the Navigation Stack
- Download the Completed Project
- Tip from Fash - Mixing Knowledge
- Download the Completed Project
- Feedback Time!
Boss Level Challenge 3 - Bitcoin Ticker
- Bitcoin Ticker - A Simple Cryptocurrency Price Tracker
- The Material DropdownButton Widget
- [Dart] Loops
- Building Widgets with Loops Solution
- Introducing Cupertino Widgets
- Building Platform Specific UI (iOS & Android)
- Introduction to Boss Level Challenge 3
- Level 1 - Bronze Medal
- Level 2 - Silver Medal
- Level 3 - Gold Medal
- Check out the completed app!
- Tip from Fash - Dealing with Frustration
- Passing Data to a State Object
- Feedback Time!
Flash Chat - Flutter x Firebase Cloud Firestore
- Flash Chat - A Lightning Fast Messaging App
- Named Routes Challenge
- [Dart] Static Modifier
- Building Widgets with Loops Solution
- Refactor Routes with the Static Const
- Building Platform Specific UI (iOS & Android)
- IFlutter Hero Animations
- Custom Flutter Animations with the Animation Controller
- Level 2 - Silver Medal
- [Dart] Mixins
- Prepackaged Flutter Animations
- Code Refactoring Challenge
- Creating a New Firebase Project
- Potential Problems When Incorporating Firebase
- Android Firebase Project Setup
- iOS Firebase Project Setup
- Firebase Flutter Packages Setup (iOS & Android)
- Registering Users with Firebase using FirebaseAuth
- Authenticating Users with FirebaseAuth
- Showing a Spinner while the User Waits
- Saving Data into Cloud Firestore
- Listening for Data from Firebase using Streams
- [Dart] Streams
- Turning Streams into Widgets Using the StreamBuilder
- Check out the completed app!
- The Flutter ListView
- A Different UI for Different Senders
- Cloud Firestore Authorisation and Security Rules
- Download the Completed Project
- Tip from Fash - Sleep is My Secret Weapon
- Feedback Time!
Flutter State Management
- Todoey - Your very own To-Do List App
- Designing the To-Do List App
- The ListView Challenge
- The BottomSheet Widget
- Positioning the BottomSheet above the Keyboard
- What is State and How do we Manage it?
- How do Callbacks work in Dart?
- The ListView Builder
- Lifting State Up Challenge l
- Flutter App Architecture Patterns
- Introducing the Provider Package
- Using a Provider and a ChangeNotifier to Manage State
- Adding New To-Do List Tasks
- Checking off To-Do List Tasks
- Deleting Tasks using the Provider Design Pattern
- Download the Completed Project
- Tip from Fash - How to Solidify Your Knowledge
- Feedback Time!
Next Steps
- Join the #FlutterBrew Contest!
- Keep Learning!
- Publish Your Apps!
- Tip from Fash- Review your goals!
- Feedback Time!
Requirement
- A Computer that has admin privileges
- Have 10GB of free space on your hard drive.
- Although you can build iOS apps on a Windows computer with Flutter, if you want to test it, you will need a Mac.
- All software we'll be using is free to download and install.