ezone
  • Home
  • Blog
    • Cloud ERP
  • Flutter
    • FlutterFlow
  • Joomla
  • About

Learning Flutter

Wait, what is Flutter™ ?

A framework for simultaneous publication of apps for Apple and Google Android devices

Flutter is an open source framework by Google for building beautiful, natively compiled, multi-platform applications from a single codebase.

I create mobile applications that can be published in the App Store and Google Play. I'm not a hard core developer, I have professional developers working with me in my clients and contracted work. But I am a product manager / interim CTO.

It seemed to me that going through the whole process of app creation and management and documenting it for others would be useful. I've been writing requirements and producing mobile applications for decades but I thought I'd like to learn at a far deeper level about Flutter just for fun and because cross platform applications are something I have a passion for. This is my learned experience of picking up these development tools and seeing what I can do.

Books

You might enjoy printed books. If you do then this one would be a strong pick - Flutter for Beginners: An introductory guide to building cross-platform mobile applications with Flutter 2.5 and Dart, 2nd Edition. As is Flutter Projects: A practical, project-based guide to building real-world cross-platform mobile applications and games (both on Amazon UK).

Flutter starter app running on iPhone 14 Pro simulator on macOS Ventura (Intel)
Flutter starter app running on iPhone 14 Pro simulator on macOS Ventura (Intel)

Of course, one does not simply publish an app.

In order to publish an app you have to plan, code, build, test, publish, operate, monitor, manage and update it. This is a familiar pattern these days, its sometimes called 'devops', and it can't be avoided, for if you skip elements of it then updating your app or managing it might become impossible over time. You don't want that! So while this collection of articles is based around Flutter it is also about all the surrounding disciplines that need to be considered as part of development and operating a cross platform mobile application and the inevitable platform behind it.

Flutter tech notes and demos

Getting started with Flutter on a Mac

Getting started with Flutter on a Mac

Build and publish a Flutter-based app for the App Store and Google Play — updated for 2026 with current tooling, current hardware, and current best practices.

Follow along to learn everything you need to set up your environment, build a Flutter-based app, put it into source control, and publish it to the App Store and Google Play. Along the way you will need some third-party tools and services. The ones used here are chosen to be the simplest viable set, but you are free to make other choices. We have published hundreds of apps for both stores and will cover wider topics around publication and ongoing distribution. One of those topics — licenses — appears in this very first article. Don't skip it.

macOS running a flutter app form the terminal in the iOS emulator with a DevTools debugger available.
macOS running a flutter app form the terminal in the iOS emulator with a DevTools debugger available.

TL:DR – Start here. Get all the tools required and build your first mobile app using Flutter on a Mac with Apple silicon. Every Mac Apple sells today runs Apple silicon, and Flutter's toolchain in 2026 reflects that reality.

Details
Last Updated: 31 May 2026

Read more: Getting started with Flutter on a Mac

Viewing changes in Flutter using hot reload

Viewing changes in Flutter using hot reload

Build and publish a Flutter-based app for the App Store and Google Play — updated for 2026 with current tooling, shortcuts, and Flutter 3.44 features.

Hot reload is one of Flutter's most compelling advantages for mobile development. The ability to see UI changes reflected on a running device in under a second — without losing app state — transforms the way you iterate on a design. If you haven't used it before, you'll quickly wonder how you ever managed without it.

TL:DR –  Start by following the instructions in Getting started with Flutter on a Mac and then you'll be able to complete the tasks in this article.

Details
Last Updated: 31 May 2026

Read more: Viewing changes in Flutter using hot reload

Making mobile apps look better - theme and colours

Making mobile apps look better - theme and colours

Build and publish a Flutter-based app for the App Store and Google Play — updated for 2026, where Material Design 3 (also called Material You) is now the default and the tooling has moved on significantly.

2014 Baseline Material color theme 

Material Design 2 was the standard and a 12-colour baseline theme was the starting point for every Flutter ap. This 2014 Baseline Material color theme made its debut with a built-in, baseline theme with 12 colours named and defined. Much has changed but these building blocks are important to understand as you think about the colours in your app.

Primary
#6200EE
Primary Variant
#3700B3
Secondary
#03DAC6
Secondary Variant
#018786

 

Background
#FFFFFF
Surface
#FFFFFF
Error
#B00020

 

On Primary
#FFFFFF
On Secondary
#000000

 

On Background
#000000
On Surface
#000000
On Error
#FFFFFF

 

Material Design 3 and Material Theme Builder

That world has changed substantially. Material Design 3 is now Flutter's default theming system, and the colour model has expanded from 12 named roles to over 30, built around a dynamic, tonal palette system. The old primarySwatch and MaterialColor approach is now deprecated in favour of ColorScheme and ThemeData.colorScheme.

The tooling has changed too. The original Material Design Colour Tool at material.io has been retired. Its replacement is the Material Theme Builder, available at material-foundation.github.io/material-theme-builder/. This tool generates a complete Material 3 colour scheme — including light and dark variants — from a single source colour, and can export directly to Flutter Dart code. It is the tool you should be using today.

This article has been revised throughout to reflect these changes. The core ideas — picking colours that complement your logo, understanding colour roles, and supporting both light and dark appearance — remain just as relevant. The implementation is simply more powerful now.

TL:DR – The colours in a mobile app can look polished if you pay attention to themes and colour choices. Modern tools make it easier than ever to generate a full Material 3 colour scheme from your brand colour, and this article shows how.

Details
Last Updated: 31 May 2026

Read more: Making mobile apps look better - theme and colours

Dark and light appearance in mobile apps

Dark and light appearance in mobile apps

Build and publish a Flutter-based app for the App Store and Google Play — revisited and updated for 2026, where dark and light appearance support is no longer optional: it is a baseline expectation for every app on every platform.

TL:DR – When this article was first written, dark mode felt like a novelty feature. That is no longer the case. Dark appearance support is no longer a nice-to-have. It is a baseline expectation on both platforms, and the tooling in Flutter has matured significantly to make it straightforward. If you are starting fresh, use Material 3 and ColorScheme.fromSeed. If you are maintaining an existing Material 2 app, plan your migration to the new type scale and colour roles. Either way, address appearance early in your design process: retrofitting it into a large codebase is genuinely painful.

Details
Last Updated: 31 May 2026

Read more: Dark and light appearance in mobile apps

Wiring up an appBar action to a login page using Flutter

Wiring up an appBar action to a login page using Flutter

Build and publish a Flutter app for the App Store and Google Play — updated for 2026 with current Flutter conventions and navigation best practices.

Apps that open with a mandatory sign-in screen lose users fast. Tolerance for friction at launch has only fallen further in recent years, and app store reviewers increasingly flag poor onboarding as a reason for low ratings. Wherever possible, apps should deliver their core value to anonymous users first, and offer sign-in as an optional upgrade to a more personalised experience. Think of it as the commute test: can a user get what they need from your app in the time it takes to check their phone between stops? If a login wall is the first thing they see, the answer is almost certainly no.

TL:DR – Tuck your login page behind an AppBar action. Keep the main experience open and accessible. Sign-in should be an invitation, not a toll booth.

Details
Last Updated: 31 May 2026

Read more: Wiring up an appBar action to a login page using Flutter

Typography, Text Styles and Themes in Flutter

Typography, Text Styles and Themes in Flutter

Build and publish a Flutter-based app for the App Store and Google Play — updated for 2026 to reflect the current Material 3 typography system.

When this article was first written, Flutter's TextTheme used naming conventions inherited from the 2018 Material Design guidelines, themselves a partial update on the 2014 spec. The sizes, weights, and spacing still largely reflected that older era. Since then, Flutter has completed its migration to Material 3 (also called Material You), and the typography system has been rebuilt from the ground up to match it.

TL:DR – Flutter's typography system has been substantially overhauled since this series began. The old headline1–headline6, bodyText1, bodyText2, subtitle1, subtitle2, caption, overline, and button style names are now fully deprecated and removed. The current TextTheme follows Material 3, with five semantic categories — Display, Headline, Title, Label, Body — each offering Large, Medium, and Small variants, giving you fifteen named styles in total. If your codebase still references headline1 or bodyText2, it will no longer compile without migration.

Details
Last Updated: 31 May 2026

Read more: Typography, Text Styles and Themes in Flutter

Trying out the Material Components for Flutter

Trying out the Material Components for Flutter

Build and publish a Flutter-based app for the App Store and Google Play — revisited and updated for 2026, where Material 3 is now the default design language and several APIs have changed significantly since this series began.

TL:DR — In this article we add Buttons, Floating Action Button, Chips, Data Table, Dialogs, List View, Popup Menu, and Navigation Drawer.

Details
Last Updated: 31 May 2026

Read more: Trying out the Material Components for Flutter

Trying out more Material Components for Flutter

Trying out more Material Components for Flutter

Build and publish a Flutter-based app for the App Store and Google Play — revisited and refreshed for 2026, now that Material 3 is firmly the default design language in Flutter.

TL:DR – n this article we add Progress indicators, Selection controls (Radio buttons, checkboxes and switches), SnackBar via ScaffoldMessenger, Bottom Navigation Bar, and Text fields — all updated to reflect current Flutter 3.x and Material 3 conventions.

Details
Last Updated: 31 May 2026

Read more: Trying out more Material Components for Flutter

Setting up Firebase Firestore

Setting up Firebase Firestore

A Beginner's Guide to Firebase Firestore for App Developers

Firebase Firestore is a flexible, scalable database built for mobile and web applications. It supports hierarchical data structures, expressive queries, realtime updates, offline support, and seamless integration with other Firebase and Google Cloud products. If you are building a mobile app and need a reliable cloud database, Firestore is an excellent choice.

This article walks you through the steps required to create a Firebase project, set up a Firebase Firestore database, add data, and read data from it.

TL:DR –  This article goes through the setup steps required to get it going.

Details
Last Updated: 11 May 2026
  • Flutter: Build Once, Deploy Everywhere

Read more: Setting up Firebase Firestore

 Setting up App Store Connect / Google Play for a new app

Setting up App Store Connect / Google Play for a new app

Build and publish a Flutter-based app for the App Store and Google Play — updated for 2026 to reflect the current state of both platforms.

Read carefully, and then read again. The decisions you make at this stage will follow your app for its entire lifecycle. Some things genuinely cannot be undone.

TL:DR – Sensible, consistent naming matters across every platform and tool you'll use. If you're managing more than one app or working with clients, you'll thank yourself later for getting this right from the start.

Details
Last Updated: 31 May 2026

Read more: Setting up App Store Connect / Google Play for a new app

Adding Firebase to our Flutter App

Adding Firebase to our Flutter App

Build and publish a Flutter-based app for the App Store and Google Play — updated for 2026 with the current FlutterFire CLI approach.

There is a list of essential configuration steps to get Firebase working in your mobile app. The good news is that the process has been significantly streamlined since this series began. The old manual approach — editing Gradle files by hand, dragging .plist files around in Xcode — has largely been replaced by a dedicated CLI tool that handles the heavy lifting for you. Once completed, you won't need to revisit this setup again.

TL:DR – This article covers Firebase configuration, database setup, and project settings required to make your Flutter app work with Cloud Firestore. It has been updated to reflect the current FlutterFire CLI workflow, updated minimum SDK requirements, and the way Firebase projects are configured in 2026.

Details
Last Updated: 31 May 2026

Read more: Adding Firebase to our Flutter App

Implementing Firestore in our app

Implementing Firestore in our app

Build and publish a Flutter-based app for the App Store and Google Play — updated in 2026 to reflect the current Firebase and FlutterFire ecosystem.

TL:DR – The core appeal of Cloud Firestore hasn't changed: edit a document in the Firebase Console and you'll see it update on your device in real time. What has changed is how you wire everything together, with FlutterFire packages now fully stable, null safety baked in throughout, and the Firestore API meaningfully updated since the early days of this series.

Details
Last Updated: 31 May 2026

Read more: Implementing Firestore in our app

FlutterFlow - Low code app builder based on Flutter

Page 1 of 3

  • 1
  • 2
  • 3

Recent articles

  • Building Subscriptions Manager: An Iterative Development Story
  • Fixing GA isn’t working
  • Wiring AdMob in Flutter: Eight Hashes for Two Apps
  • Why Chrome couldn't reach my LAN web server on macOS, and why it wasn't DNS
  • Don't fight macOS (DFMOS)
  • Rebuilding 928uk® in Flutter

Popular articles about Flutter

  • Java on macOS Sequoia - especially for android app developers
  • Export compliance and the App Store
  • Getting started with Flutter on a Mac
  • Flutter development on a Chromebook
  • Building a Flutter Barcode Scanner app
  • Using Cloud Firestore 
  • Using Google Sheets in a Flutter app
  • Getting the latest YouTube video for a Flutter app
  • Sign in with Apple from Pub.Dev Package Manager for Flutter
  • Bad CPU type in executable Error: Unable to 'pub upgrade' flutter tool
  • Dark and light appearance in mobile apps
  • Starting from a sample in Flutter
  • Making mobile apps look better - theme and colours
  • Adding Google as a Sign-in provider
  • Setting up Firebase Firestore

Popular Topics

  • macOS: The redefinition of modern Computing 60
  • Apple Silicon: Redefining Performance and Efficiency 26
  • Android: A Dominant Force in Mobile Computing 24
  • Linux: The Backbone of Modern Computing 19
  • Ubuntu Linux: Stability, Security, and Open-Source Freedom 18
  • iOS: The Engine Behind Apple’s Mobile Revolution 18
  • Microsoft Windows: An Operating System 18
  • Apple Computer: Innovation, Software, Electronics 18
  • Technology We Use: Devices and Tools Powering Everyday Life 14
  • Flutter: Build Once, Deploy Everywhere 14
My Blog
  • Terms of use
  • Privacy statement
  • Contact us
  • Sitemap
  • Joomla! — award-winning content management system (CMS)
  • Flutter — An open source framework for building applications from a single codebase