The Complete Flutter Development Bootcamp with Dart
In September 2019 I completed this course in Flutter development made in collaboration with the Google Flutter team and taught by Angela Yu. This post showcases the projects developed alongside the course.
TODO List App
This todo-list app uses the Provider state pattern for handling app state.
What This Project Taught Me
- The difference between ephemeral state and app state
- How to manage app state with Provider
- How to use the List Builder to populate lists from data structures
- How to use the BottomSheet widget
Todobedo in Action
Instant Messenger
This instant messenger app incorporates Firebase for user authentication and NoSQL data storage in the cloud.
What This Project Taught Me
- How to incorporate Firebase in Flutter projects
- How to register and sign in users with Firebase authentication
- How to use Firebase Cloud for storing data
- How Streams work in Dart and how to use them for reactive programming
- How to use ListViews
- How to create Hero animations and how to customize them using the animation controller
- How mixins work in Dart
Flash Chat in Action
Cryptocurrency Monitor
This app fetches cryptocurrency prices from the BitcoinAverage REST API and displays them to the user.
What This Project Taught Me
- How to use Cupertino widgets
- How to check the platform the app is being run on to customize UI for iOS and Android
- How to use the Material design DropdownButton
Coin Ticker in Action
Weather App
This app fetches weather data for either your current location or a location of your choice using the OpenWeather API’s.
What This Project Taught Me
- How asynchronous programming works in Dart, with Futures
- How to use the http package for communication with REST API’s
- How to parse JSON in Dart
- How to get location data for iOS and Android with the Geolocator package
- How to pass data between screens with the Navigator
- The lifecycle of Stateful widgets
- Exception handling in Dart
Clima in Action
BMI Calculator
This BMI calculator recreates an app design by Ruben Vaalt on Dribbble by breaking down common Flutter widgets and using their individual components to build fully customized ones.
What This Project Taught Me
- How to work with Flutter themes
- How to use routing in Flutter
- How to read the Flutter source code to build widgets from scratch
- How to pass functions as first-order objects in Dart
- How to extract widgets automatically
BMI Calculator in Action
Choose Your Own Adventure
This choose-your-own-adventure game was created as a challenge to revise the concepts learned in the previous Quiz App project.
Destini in Action
Quiz App
This app asks the user a range of true/false questions and the project serves as a lesson in Dart OOP concepts and Flutter app architecture.
What This Project Taught Me
- Best practices for Flutter app architecture
- How OOP concepts are implemented in Dart
- The difference between final and const in Dart
Quizzler in Action
Xylophone
This musical app incorporates the audioplayers package to play sound on both Android and iOS.
What This Project Taught Me
- How to find and import open source Flutter libraries
- How to play sounds on iOS and Android
- How to dynamically generate widgets
Xylophone in Action
Magic 8-Ball
This app was created as a challenge to revise the concepts learned in the previous Dice app project.
Magic 8-Ball in Action
Dice App
This dice throwing app teaches basic interactivity and local state management.
What This Project Taught Me
- How to work with stateful widgets with setState
- How to set named and required properties
- How to build responsive UI:s with the Expanded widget
- How to do string interpolation in Dart
- How to work with different gesture recognizers
- How to use DartPad for writing and compiling Dart code online
Dicee in Action
Digital Business Card
This project teaches how to easily create beautiful UI’s using widgets and icons based on the built-in Material design concepts.
What This Project Taught Me
- The difference between hot reload and hot refresh
- How to create stateless widgets
- How to position UI elements with different Containers, Rows and Columns
- How to style text
- How to add custom fonts
- How to use Material icons
MiCard in Action
I Am Rich / I Am Poor apps
These ‘Hello World’ style projects teach the basics of creating Flutter projects from scratch, as well as working with basic widgets and assets.
What These Projects Taught Me
- How to create Flutter projects from scratch
- How to use MaterialApp Scaffold and AppBar widgets
- How to work with assets
- How to generate app icon sets with appicon.co
- How to work with the Material Design color system
The Complete Android Oreo Developer Course
In October 2019 I completed this course in native Android development with Java and Kotlin, and became a certified[1][2] Java developer in the process! The course was taught by Rob Percival and Nick Walter. This post showcases the projects developed alongside the course.
Snapchat Clone
This app was written entirely in Kotlin and uses Firebase to store and send photos and messages between registered users. The photos and messages get automatically deleted when they are opened.
What This Project Taught Me
- How to authenticate, sign in and out users in Firebase with Kotlin
- How to upload images to Firebase
- How to use the Firebase realtime database
- How to create bitmaps and image views with a 1:1 aspect ratio
- How to use UUID to create unique strings
- How to clear the back button history
- How to use Kotlin nullable and non-nullable shorthands
Snapshot in Action
Uber Clone
This app allows the user to login as either a rider to request for an Џвєг or a driver to accept nearby requests. The rider gets notified when their request has been accepted and can follow the driver on the map. The driver sees where the rider is on the map, and gets directions when the request is accepted. This app expands upon many concepts previously taught in the course, focusing on Google Maps functionality and Parse server storage and authentication.
What This Project Taught Me
- How to login anonymously with Parse
- How to manipulate a Google Maps activity
The Driver’s View
The Rider’s View
Flappy Bird and Super Mario Run Clones
These games were developed using the java library libGDX.
What These Projects Taught Me
- How to develop mobile games with libGDX
Floppy Birb in Action
Coin Man in Action
Twitter Clone
This app uses Parse to allow users to post “tweets” and view tweets from the users they decide to follow.
What This Project Taught Me
- How to use multiple choice lists
- How to build custom list views
Twotter in Action
WhatsApp Clone
This messenger app uses Parse to send messages between registered users.
What This Project Taught Me
- How to merge multiple Parse queries into one
- How to auto-scroll a list view
WazzApp in Action
Instagram Clone
This app uses Parse server to allow users to upload photos and view the feeds of other users.
What This Project Taught Me
- How to setup a Parse server
- How to authenticate users with Parse
- How to upload photos to Parse
- How to work with Parse queries
- How to wait for a result from a started activity
- How to set layout parameters programmatically
- How to override key events
Instagran in Action
Android Wear Counter App
This simple app runs on your smartwatch and counts people (or anything, really).
What This Android Wear Mini Course Taught Me
- How to setup an Android Wear project
- How to accommodate for both round and square watch faces
- How to recognize speech input
- How to connect the watch to a smartphone
- How to get notifications in the watch
- How to build custom watch faces
People Counter in Action
Bluetooth Discovery
This app lists nearby Bluetooth devices.
What This Project Taught Me
- How to use BroadcastReceivers, BluetoothDevices and BluetoothAdapters
- How to work with IntentFilters
Bluetooth Discovery in Action
Hacker News
This app allows the user to read news articles from Hacker News.
What This Project Taught Me
- How to setup and query SQLite databases in Android
- How to use WebViews
Hacker News in Action
Notes
This app allows the user to take notes and save them to their device.
What This Project Taught Me
- How to save user data to and read from SharedPreferences
- How to customize the action bar and add menus
- How to use Alert Dialogs
Notes in Action
Memorable Places
This app allows the user to put markers on a map for places they’ve been to and want to remember.
What This Project Taught Me
- How to integrate Google Maps in your Android app
- How to customize the appearance of the map
- How to show the user’s location on the map
- How to use Intents to pass information and start new Activities
Memorable Places in Action
Hiker’s Watch
This app shows exactly where you are in the world. Useful if you ever get lost.
What This Project Taught Me
- How to request for user permissions and handle when they are given
- How to get the current and last known location of the device
- How to use GeoCoder to get the address from the device’s coordinates
- How to hide the app bar
- How to execute different code for different Android versions
Hiker’s Watch in Action
What’s the Weather?
This weather app uses the OpenWeatherMap API to display the weather conditions of a chosen location.
What This Project Taught Me
- How to process JSON in Java
- Regex in Java
- How to select multiple layout elements and edit all their properties at once!
What’s the Weather? in Action
Guess the Celebrity
This game shows pictures of celebrities (dogs) and challenges the player to guess who it is. The project teaches how you can download and parse HTML in your Android app, but probably shouldn’t.
What This Project Taught Me
- How to download and parse HTML pages
- Advanced string manipulation in Java
Guess the Celebrity in Action
Brain Trainer
This game challenges the player to answer as many simple math questions as possible before the time runs out.
What This Project Taught Me
- How to toggle visibility of elements
Brain Trainer in Action
Egg Timer
This project introduces timers and plays a sound when the time runs out.
What This Project Taught Me
- How to use Handlers, Runnables and CountDownTimers
- How to update the state of UI components programmatically
Egg Timer in Action
Multiplication Tables
This app uses a list view and a slider to display the different multiplication tables.
What This Project Taught Me
- How to use list views and adapters
- How to use different types of list items
- How to use sliders
Multiplication Tables in Action
Basic Phrases
This app plays audio recordings of simple phrases in French.
What This Project Taught Me
- How to add audio assets to Android projects
- How to use the media player
- How to control audio and volume
Basic Phrases in Action
Connect Three
This tic-tac-toe style game uses animations to become a little more exciting.
What This Project Taught Me
- How to implement different kinds of animations
- How to combine several animations into one
- How to use tags
Connect Three in Action
Higher or Lower? and Number Shapes
These simple projects teach the fundamentals of Java Android development.
View Higher or Lower? on GitHub
What These Projects Taught Me
- Java syntax and fundamentals
Higher or Lower? in Action
Number Shapes in Action
Currency Converter
This is the first app developed in the course and the project teaches the basics of setting up Android Studio projects, Android concepts and terminology, creating activities and editing layouts.
What This Project Taught Me
- How to edit layout XML files in Android Studio
- How different layout constraints work
- How to use gravity to align elements
- How to use savedInstanceState
- How to debug in Android Studio
- How to use different types of text input
- How to display Toast messages
- How to use sp for accessibility scaling
Currency Converter in Action
Extras
These are other things I learned that are not connected to a specific app:
- How to use adaptive icons
- How to use custom fonts
- How to play video
- How to use autofill and autocomplete
- How to use PictureInPicture mode
- How to setup AR Core projects
- How to Daydream VR projects