Readings "Passive" learning opportunities

This page collects together all of the “readings” associated with individual modules.

In this site, readings represent “passive” learning opportunities, as opposed to experiences, which represent “active” learning opportunities.

Module: Introduction to Mobile Application Development

Syllabus

Basic information about the class

Flutter on Five Platforms

A nice developer perspective on what it’s like to get started with Flutter-based mobile app development.

Module: Environment Configuration

How to install IntelliJ IDEA

Installation instructions for the IntelliJ IDE.

How to install GitHub Desktop

Installation instructions for the GitHub Desktop tool.

How to install Dart

Installation instructions for the Dart programming language.

How to install DartPad

Installation instructions for the DartPad browser tool.

How to install Flutter

Installation instructions for the Flutter framework.

How to install GitHub Copilot

Installation instructions for GitHub Copilot.

Module: Dartapalooza

DartPad keyboard shortcuts

DartPad uses the CodeMirror editor, so here are its shortcuts.

Dart Language support in IntelliJ IDEA

Editing, running, and debugging Dart code in IntelliJ IDEA (aka Webstorm)

How to find the Dart SDK path

IntelliJ wants this path. Here’s how to find it (on MacOS)

Effective Dart

Best practices for Dart style, documentation, language features, and design.

A tour of the Dart Language

Guide to all major Dart language features.

Dart Language support in IntelliJ IDEA

How to Create DartPad Examples from GitHub Gists

Module: Flutterpalooza

Begin learning Flutter: Welcome

First video in the Begin Learning Flutter playlist

Begin learning Flutter: How do I make my first Flutter app?

Overview of the Flutter approach to app implementation

IntelliJ shortcuts and customizations for Flutter

Tips and tricks for improving Flutter development in IntelliJ

VSCode customizations (from Code with Andrea)

Tips and tricks for improving Flutter development in VSCode

Flutter coding standards

Initial tips for Flutter coding standards

Layouts in Flutter

A high level introduction to Flutter’s approach to UI component layout

Understanding Constraints

Are your widgets the wrong size or in the wrong position? This article can help.

Module: Material Design

Using Material Design with Flutter

Simple example of Material Design components with Flutter

Flutter Material Components Widget Library

Catalog of visual, behavioral, and motion widgets implementing Material Design guidelines.

Flex Color Scheme

Arguably the best of all the Flutter theme design packages.

Module: UI Mockup

Deep dive into the skeleton app template

Go beyond the counter app with a more realistic template

Agile Garden Club mockup, Phase 1

Example of a Phase 1 mockup

Agile Garden Club mockup, Phase 2

Example of a Phase 2 mockup

How to build a bottom navigation bar in Flutter

Creating a bottom navigation bar with selectable items

Material Icons

Searchable listing of Material Icons and how to reference them in Flutter

Flutter Casual Games Toolkit

Get your casual, mobile game from idea to launch with Flutter

Module: State Management

Create a controller for a custom widget

A tutorial on the controller design pattern and its implementation in Flutter

Write a controller on Flutter

Another tutorial on the controller design pattern and its implementation in Flutter

Introduction to state management

What is state, thinking declaratively, ephemeral vs. app state, simple app state management

State videos

Stateful vs stateless widgets, how state objects work, and state management in a nutshell

Managing (widget) state

How to manage widget state: within the widget, via the parent, or both.

Riverpod 2.0

Official documentation for Riverpod 2.0

Explain Like I'm Five: Riverpod

Riverpod is simply a way of declaring ‘super smart global variables’.

Flutter Riverpod 2.0: The Ultimate Guide

Why use Riverpod, how to install, the types of Providers, and examples.

Flutter Cookbook: Forms

Overview of form creation, styling, validation, and retrieval

Flutter Form Builder

Build a form, validate fields, react to changes, collect final user input

Agile Garden Club mockup, Phase 3

Example of a Phase 3 mockup

Module: Architecture

1. Flutter App Architecture: An Introduction

A recommended architecture for Flutter, along with comparisons to other popular architectures (Clean, MVC, MVVM, Bloc, etc)

2. Flutter App Architecture: The Repository Pattern

The repository pattern accesses data objects from various sources, such as a backend API, and makes them available as type-safe entities to the domain layer of the app.

3. Flutter App Architecture: The Domain Model

The domain model is a conceptual model of the domain that incorporates both behavior and data.

4. Flutter App Architecture: The Application Layer

The application layer implements the business logic and acts as an intermediary between the user interface and the data layer.

5. Flutter App Architecture: The Presentation Layer

The presentation layer implements the user interface of the app.

6. Flutter App Architecture: Project Structure

Best practices for organizing the directory structure of your Flutter app

7. Flutter App Architecture Example: Data Layer

Flutter Weather App Example using the OpenWeatherMap API

8. Flutter App Architecture Example: Presentation Layer

Simple authentication flow using Flutter & Riverpod

Agile Garden Club mockup, Phase 4

Example of a Phase 4 app illustrating the Riverpod Architecture

Module: Data Management

Firebase in Flutter: Documentation

Home page for Flutter’s Firebase documentation

Get to know Firebase for Flutter

A codelab introducing the basics of developing a Firebase backend for Flutter apps.

Firestore Setup Cheat Sheet

Minimal steps to setup Cloud Firestore for a new Flutter app

Cloud Firestore Data Model

Key concepts for Firestore, a NoSQL, document-oriented database.

Get to Know Cloud Firestore (Playlist)

Queries, pricing, maps, security, pagination, structure, transactions, offline, functions

Starter architecture for Flutter and Firebase apps using Riverpod

A tutorial for a template app implementing Flutter, Firebase, and Riverpod.

How to turn on billing and still sleep at night

Ways to analyze Firebase usage and billing costs, and get notified if usage is higher than anticipated

Freezed

Freezed is the current best practice for data model definition

Flutter freezed: the complete crash course

A somewhat more gentle introduction to Freezed.

Code with Andrea: How to parse JSON with Freezed

How to use Freezed to simplify the implementation of JSON serialization and de-serialization

Initializing your Firestore database with Firefoo

Firefoo is a GUI client for Firebase Firestore that simplifies database initialization from JSON files.

Flutter_Riverpod_Freezed sample app

Example app using Riverpod and Freezed for API retrieval and display

How to Auto-Generate your Providers with Flutter Riverpod Generator

How to use the @riverpod annotation to generate Riverpod providers.

How to Fetch Data and Perform Data Mutations with the Riverpod Architecture

Using Riverpod to manage data from the database

Agile Garden Club mockup, Phase 5

Example of a Phase 5 mockup

Using an app repo as a template

How to create a new application from a pre-existing codebase

Module: Deployment

iOS Deployment Guide

How to publish your app to the Apple App Store

Android Deployment Guide

How to publish your app to the Google Play Store

App Store Review Guidelines

Requirements for a successful submission to the App Store

XCode Documentation: Distributing your app for beta testing

How to use TestFlight to obtain feedback on your iOS app

Release an iOS app with Flutter in 7 steps

How to deploy to Apple

Firebase App Distribution

How to deploy for testing using Firebase App Distribution

Module: Usability Evaluation

Usability Testing 101

Introduction to the goals and methods for usability testing

Usability Evaluation

Overview of four approaches to usability evaluation: usability testing, heuristic evaluation, competitive analysis, and impression testing.

When Observing Users Is Not Enough: 10 Guidelines for Getting More Out of Users’ Verbal Comments

While some usability professionals might claim that you cannot rely on what users say—and there are some risks in relying on users’ comments—there are means of avoiding or minimizing those risks.

Template consent form

Informed consent is an important part of usability testing.

Module: FTW (Fix The World)

Lean Canvas Intro: Uber Example

A brief introduction to the Lean Canvas, illustrated with Uber

Lean Canvas Template

Lean Canvas Template

Lean Canvas (Uber Example)

Describe the Uber business model with a Lean Canvas

Lean Canvas (GGC Example)

Describe the GeoGardenClub business model with a Lean Canvas

Wireframe template

Example Google Slide document with wireframe

FTW Project Concepts

Project ideas for Mobile Application Development