Tagged with #flutter

Browse all tags
The ListWheelScrollView Widget

The ListWheelScrollView Widget

#dart
#flutter
#widgets

If you need to select between a small list of values but have limited vertical space, you can use a ListWheelScrollView.

Color API Deprecations in Flutter 3.27

Color API Deprecations in Flutter 3.27

#dart
#flutter

To support the latest wide gamut color spaces, Flutter 3.27 has deprecated some properties and methods in the Color class.

Text Style with Tabular Figures

Text Style with Tabular Figures

#dart
#flutter
#widgets

If you want to render fixed width (monospaced) digits, set FontFeature.tabularFigures() inside your TextStyle.

Digits Separators in Dart 3.6

Digits Separators in Dart 3.6

#dart
#flutter

Since Dart 3.6 (Flutter 3.27), you can use _ as a digits separator. This works with integers and floats, as well as custom formats (hex, scientific).

New Spacing Argument in Row/Column (Flutter 3.27)

New Spacing Argument in Row/Column (Flutter 3.27)

#dart
#flutter
#widgets
#layouts

Since Flutter 3.27, you can pass a spacing argument to your Row and Column widgets (rather than using SizedBox).

The Banner Widget

The Banner Widget

#dart
#flutter
#widgets

You can use the Banner widget to place a small diagonal banner over a child widget. For more custom styling, build your own using a custom painter.

Improve your code with Cursor Edit Mode

Improve your code with Cursor Edit Mode

#dart
#flutter
#ai

You can use Cursor edit mode to sweep through your code and make changes. Works best with imperative code.

Fixing Version Solving Failed Errors

Fixing Version Solving Failed Errors

#dart
#flutter

A few suggestions for solving the "version solving failed" error when updating your Flutter dependencies.

How to Release Your Flutter App on the iOS App Store

How to Release Your Flutter App on the iOS App Store

#dart
#flutter
#production

A step-by-step guide on how to publish your Flutter app, including metadata, compliance, privacy manifests, Xcode settings, and building your IPA file.

Adding a Privacy Manifest in Xcode

Adding a Privacy Manifest in Xcode

#dart
#flutter
#production

Starting November 12, 2024, apps that don’t include a Privacy Manifest can’t be submitted for review in App Store Connect.

How to Build a Robust Flutter App Initialization Flow with Riverpod

How to Build a Robust Flutter App Initialization Flow with Riverpod

#dart
#flutter
#state-management
#riverpod

Some useful Riverpod techniques you can use to initialize async dependencies, show some loading UI, and handle errors during app startup.

Fix for Missing Compliance Warning in App Store Connect

Fix for Missing Compliance Warning in App Store Connect

#dart
#flutter
#production

If your app does not use Non-Exempt Encryption, set ITSAppUsesNonExemptEncryption to NO in your Info.plist file in Xcode.

Material Icons Theme (VSCode Extension)

Material Icons Theme (VSCode Extension)

#dart
#flutter
#vscode

Upgrade all your file icons with the Material Icons Theme. File nesting is properly supported, too, and the icons will be correctly left-aligned.

iOS App Store: Build and Upload Script

iOS App Store: Build and Upload Script

#dart
#flutter
#production

A simple script to build and upload your iOS app to App Store Connect. You can run this locally, no CI/CD needed!

API keys storage: Client or Server?

API keys storage: Client or Server?

#dart
#flutter
#security
#production

Some guidelines to help you decide which API keys belong on the client, and which belong to the server.

How to Show the Downloads Count on pub.dev

How to Show the Downloads Count on pub.dev

#dart
#flutter

How to enable dark mode and see downloads count for your favourite packages on pub.dev.

Script to Update the Android Project Settings

Script to Update the Android Project Settings

#dart
#flutter
#production

Use this script to update the Gradle, Java, NDK version and other settings in your Android project.

How to Design Your Flutter App Icons in Figma

How to Design Your Flutter App Icons in Figma

#flutter
#design

A video showing how to create a custom app icon from scratch in Figma, even if you're new to design.

Error.throwWithStackTrace

Error.throwWithStackTrace

#dart
#flutter
#error-handling

With Error.throwWithStackTrace, you can throw custom exceptions while keeping the original stack trace intact.

Apple Small Business Program

Apple Small Business Program

#dart
#flutter

If your app sales are less than $1M/year, you can apply to the Small Business Program and slash your fees to 15%!

Declaring Riverpod Providers with Ref

Declaring Riverpod Providers with Ref

#dart
#flutter
#riverpod

Since Riverpod 2.6.0, all generated providers can be declared with a Ref argument. Here's how to migrate to the new syntax.

What does flutter pub upgrade do?

What does flutter pub upgrade do?

#dart
#flutter

If you want to upgrade all dependencies to the latest non-major version, ignoring the pubspec.lock file, use flutter pub upgrade.

Firebase Initialization with Multiple Flavors in Dart

Firebase Initialization with Multiple Flavors in Dart

#dart
#flutter
#firebase
#production

An overview of two different strategies for initializing Firebase inside a Flutter app with multiple flavors.

How to Setup Flutter & Firebase with Multiple Flavors using the FlutterFire CLI

How to Setup Flutter & Firebase with Multiple Flavors using the FlutterFire CLI

#dart
#flutter
#firebase
#production

Learn how to set up Firebase for multiple flavors in your Flutter app using the FlutterFire CLI. This guide covers iOS, Android, and web configurations.

Fixing Build Issues - Nuclear Option

Fixing Build Issues - Nuclear Option

#dart
#flutter
#production

If you have a Flutter project that no longer builds on a specific platform, you can delete the whole folder and generate it again.

Force Update with Remote Config

Force Update with Remote Config

#dart
#flutter
#production

If you ever needed a force update prompt that is controlled remotely, you can use the force_update_helper package.

Show the Licenses in your Flutter app

Show the Licenses in your Flutter app

#dart
#flutter
#production

Your Flutter app should show the licenses for packages in use. This is often a legal requirement, as many open-source licenses require attribution.

6 Key Steps to Take Before Releasing your Next Flutter App

6 Key Steps to Take Before Releasing your Next Flutter App

#dart
#flutter
#production

Prepare your Flutter app for launch with these 6 steps, including flavors and environments, error monitoring, force updates, and in-app reviews.

Dark and Tinted Icons on iOS 18

Dark and Tinted Icons on iOS 18

#dart
#flutter

How to enable dark and tinted icons on iOS 18 using the flutter_launcher_icons package.

FlutterFire Config with Multiple Flavors (Shell Script)

FlutterFire Config with Multiple Flavors (Shell Script)

#dart
#flutter
#firebase

If your Flutter app uses multiple flavors, you can use the FlutterFire CLI to generate the config files for each flavor.

Remote Config via GitHub Gist

Remote Config via GitHub Gist

#dart
#flutter
#networking

Here's how to remotely control the behaviour of your app by fetching some JSON from a GitHub gist.

Generate Commit Messages with Copilot

Generate Commit Messages with Copilot

#dart
#flutter
#ai

If you're not too picky about how you write your commit messages, this can be a neat little time saver!

Control the Code Generation Order

Control the Code Generation Order

#dart
#flutter
#code-generation

If you're using multiple code generators that depend on each other, you can enforce the code generation order in your build.yaml file.

Async Stream Initialization with async*

Async Stream Initialization with async*

#dart
#flutter

If you want to return a stream that depends on some asynchronous code, you can use async* and yield*

How to Ask for In-App Reviews in Your Flutter App

How to Ask for In-App Reviews in Your Flutter App

#dart
#flutter
#analytics
#production

The in_app_review package makes it easy to ask for reviews. And by using a data-driven approach, you can show the prompt at the right time.

Timing the In-App Review Prompt

Timing the In-App Review Prompt

#dart
#flutter

To avoid prompting users too early, track your desired event and only ask for a review after it is triggered N times.

Working with Multiple Xcode Versions

Working with Multiple Xcode Versions

#dart
#flutter

How to download multiple releases from xcodereleases.com, and switch between them with the xcode-select CLI.

Adding a Navigator Observer

Adding a Navigator Observer

#dart
#flutter
#navigation

By implementing a NavigatorObserver, you can track page views or add navigation breadcrumbs to your error logs.

Flutter DevTools Logging Page

Flutter DevTools Logging Page

#dart
#flutter
#navigation

The Android debug logs can get quite noisy. To work around it, open the DevTools logging page, which will only show the Flutter logs.

BuildContext Extension for Push, Pop

BuildContext Extension for Push, Pop

#dart
#flutter
#navigation

Rather than calling Navigator.of(context), you can define all the push/pop methods inside a BuildContext extension and make your navigation code less verbose.

Stylish Text with ShaderMask and LinearGradient

Stylish Text with ShaderMask and LinearGradient

#dart
#flutter
#widgets

To create a stylish Text, use the ShaderMask widget with a shaderCallback that returns a LinearGradient with begin and end points, along with a list of colors.

How to add a Badge to an IconButton

How to add a Badge to an IconButton

#dart
#flutter
#widgets

The easiest way to add a badge to an IconButton is to use the Badge widget. Use this to show a numeric value or a custom label next to an icon.

How to detect triple taps with RawGestureDetector

How to detect triple taps with RawGestureDetector

#dart
#flutter

Thanks to RawGestureDetector and SerialTapGestureRecognizer, you can implement a custom TripleTapDetector widget.

Flutter Sidebar (VSCode)

Flutter Sidebar (VSCode)

#dart
#flutter

How to use the Flutter VSCode sidebar to access the DevTools and other useful functionality.

DevTools Performance Rebuild Stats

DevTools Performance Rebuild Stats

#dart
#flutter
#performance

Since Flutter 3.24, a new Rebuild Stats feature is available on the DevTools performance page. Use it to spot widgets that rebuild too often.

The CarouselView Widget

The CarouselView Widget

#dart
#flutter
#layouts
#widgets

Since Flutter 3.24, a new CarouselView widget is available. You can set the children's size with itemExtent and shrinkExtent, and use it with any widgets as children.

The dart pub unpack command

The dart pub unpack command

#dart
#flutter

As of Flutter 3.24, a new "pub unpack" command is available. You can use it to download a package locally and easily explore its source code.

The OverflowBar Widget

The OverflowBar Widget

#dart
#flutter
#layouts
#widgets

OverflowBar makes it easy to layout your widgets in a row unless they overflow the available horizontal space, in which case they're arranged as a column.

Futures: await vs unawaited vs ignore

Futures: await vs unawaited vs ignore

#dart
#flutter

When you call a method that returns a Future, you have to choose between using await, unawaited, and ignore. Here's an explanation.

Useful arguments in the log function (from dart:developer)

Useful arguments in the log function (from dart:developer)

#dart
#flutter
#logging

The humble log function has many arguments that can be used to customize the appearance of your logs. Here's how to use them.

Use unawaited for your analytics calls

Use unawaited for your analytics calls

#dart
#flutter

When tracking analytics events in your code, consider using `unawaited` from `dart:async` (analytics calls should be fire & forget).

How to use --dart-define-from-file with .env and json files

How to use --dart-define-from-file with .env and json files

#dart
#flutter
#security
#networking

--dart-define-from-file supports both .env and json files. Here's how to use each variant.

Get the current method name from the Stack Trace (Hack)

Get the current method name from the Stack Trace (Hack)

#dart
#flutter

By doing some string manipulation on the current stack trace, you can extract the current method name (useful for logging).

Hugeicons (4,000 stroke Flutter icons)

Hugeicons (4,000 stroke Flutter icons)

#dart
#flutter
#package

The hugeicons package was recently released, featuring a collection of over 4,000 stroke Flutter icons.

How to Store API Keys in Flutter: --dart-define vs .env files

How to Store API Keys in Flutter: --dart-define vs .env files

#dart
#flutter
#security
#networking
#production

An overview of different techniques for storing API keys on the client, along with security best practices to prevent them from being stolen.

How to Cancel HTTP Requests with CancelToken and Riverpod

How to Cancel HTTP Requests with CancelToken and Riverpod

#dart
#flutter
#networking

You can use CancelToken to stop unnecessary data fetches when users navigate away or to implement "cancel" buttons in your Flutter apps.

TextField with Selection Height Style

TextField with Selection Height Style

#dart
#flutter

You can use BoxHeightStyle to change the selection height style of a TextField (useful for multi-language apps).

The widget build method: DOs and DON'Ts

The widget build method: DOs and DON'Ts

#dart
#flutter

The widget build method can potentially be called in every frame and should not have any side effects.

How to Render Transparent Images with the Opacity Argument

How to Render Transparent Images with the Opacity Argument

#dart
#flutter
#performance

If you need to show a semi-transparent image, use the opacity argument with AlwaysStoppedAnimation rather than adding a parent Opacity widget.

Disposing Fields to Avoid Memory Leaks

Disposing Fields to Avoid Memory Leaks

#dart
#flutter
#static-analysis

Forgetting to dispose controllers in your State class can lead to memory leaks, and the "dispose-fields" rule from DCM can warn you about it.

Flutter: Find Unused Dart Files (VSCode Extension)

Flutter: Find Unused Dart Files (VSCode Extension)

#dart
#flutter

With this VSCode extension, you can remove all the unused assets, files, and dependencies in your Flutter project and decrease your app bundle size.

Conditional Imports for Web/Native APIs

Conditional Imports for Web/Native APIs

#dart
#flutter
#flutter-web

If you try to access a web-specific API on native platforms, your app will crash. Here's how to use conditional imports to solve this problem.

How to use defaultTargetPlatform and kIsWeb

How to use defaultTargetPlatform and kIsWeb

#dart
#flutter
#flutter-web

To detect the current platform, check for kIsWeb beforehand and use it together with defaultTargetPlatform, which doesn't import dart:io.

The Universal Platform Package

The Universal Platform Package

#dart
#flutter
#flutter-web

With the Universal Platform package, you can perform platform detection with a unified syntax on all platforms, including web, but there's a catch.

Useful Aliases for Flutter App Development

Useful Aliases for Flutter App Development

#dart
#flutter
#productivity

A collection of useful aliases to speed up your Flutter app development workflow.

Taking Screenshots with the Flutter CLI

Taking Screenshots with the Flutter CLI

#dart
#flutter
#productivity

How to use the Flutter CLI to save screenshots from connected iOS and Android emulators

VSCode Shortcuts, Extensions & Settings for Flutter Development

VSCode Shortcuts, Extensions & Settings for Flutter Development

#dart
#flutter
#vscode
#productivity

A curated list of popular VSCode shortcuts, extensions & settings to speed-up your Flutter development workflow and code like a pro.

How to Define Type Aliases in Dart

How to Define Type Aliases in Dart

#dart
#flutter

Here's how to use typedef to define type aliases for your function and non-function types in Dart.

Use Type Annotations for Safer Code

Use Type Annotations for Safer Code

#dart
#flutter

By adding type annotations to your collections, the Dart analyzer will warn you if you add values of the wrong type.

Prefer const over final over var

Prefer const over final over var

#dart
#flutter

Const is for hardcoded, compile-time constants. Final is for read-only variables that are set just once. Var is for variables that are set more than once.

Flutter Web App Initialization Logic with CSS Loader

Flutter Web App Initialization Logic with CSS Loader

#dart
#flutter
#flutter-web

How to use the web app bootstrap process (new in Flutter 3.22) and add a CSS progress indicator before the Flutter app is ready to take over.

Transform SVG assets at build time (Vector Graphics Compiler)

Transform SVG assets at build time (Vector Graphics Compiler)

#dart
#flutter
#performance

Here's how to use the Vector Graphics Compiler to precompile SVGs at build time for better rendering performance.

JsonCodable (Dart Macros experiment)

JsonCodable (Dart Macros experiment)

#dart
#flutter
#json
#macros

How to use the JsonCodable macro to augment your classes with fromJson and toJson methods

Use SizedBox.shrink() to return an empty box

Use SizedBox.shrink() to return an empty box

#dart
#flutter
#widgets
#layouts

If you need to return an empty widget, SizedBox.shrink() is more performant than an empty Container.

Enabling Asserts in Release Mode in Dart / Flutter

Enabling Asserts in Release Mode in Dart / Flutter

#dart
#flutter

By default, asserts are only enabled in Debug mode. To enable them in Release mode, run with the --enable-asserts flag.

REST Client Extension for VSCode

REST Client Extension for VSCode

#dart
#flutter
#networking

How to send HTTP requests and view the response directly in Visual Studio Code.

How to Hide Generated Dart Files in GitHub PRs

How to Hide Generated Dart Files in GitHub PRs

#dart
#flutter
#code-generation

If you use build_runner and your generated Dart files are added to Git, you can hide them by default in your PRs and diffs. Here's how.

Responsive Flutter Layout with SizedBox & Center

Responsive Flutter Layout with SizedBox & Center

#dart
#flutter
#layouts

Some helper widgets for creating Flutter layouts that grow horizontally up to a given width, then remain fixed at that width.

How to Use Tags in Your Unit and Widget Tests

How to Use Tags in Your Unit and Widget Tests

#dart
#flutter
#testing

Ever wanted to filter tests so you only run the ones you need to? This can be easily done using test tags.

Code Generation with Dart & Flutter: The Ultimate Guide

Code Generation with Dart & Flutter: The Ultimate Guide

#dart
#flutter
#code-generation
#freezed
#networking
#ultimate-guide

An extensive guide covering the code generation mechanism in Dart, useful code-generating packages, and tips for efficient codebase maintenance.

How to Run Multiple Test Variants

How to Run Multiple Test Variants

#dart
#flutter
#testing

You can run a widget test multiple times with the variant argument. Very useful for golden image tests for different screen sizes.

Flutter Tip: Use Composition Aggressively

Flutter Tip: Use Composition Aggressively

#dart
#flutter
#layouts

Create small, reusable widgets that are easier to reason about, and banish the massive build method from existence!

Use DecoratedBox to add Rounded Borders to a Widget in Flutter

Use DecoratedBox to add Rounded Borders to a Widget in Flutter

#dart
#flutter
#widgets

In Flutter you can use DecoratedBox to set a lot of decoration/styling options to your widgets. Here's how.

How to quickly generate some fake data when building Flutter UIs

How to quickly generate some fake data when building Flutter UIs

#dart
#flutter
#package

The faker package lets you generate addresses, names, food, dates, sports... you name it! Here's how to use it.

How to replace SizedBox with compile-time constants for better performance

How to replace SizedBox with compile-time constants for better performance

#dart
#flutter
#layouts
#widgets

A useful tip to write more performant code when using SizedBox as a gap between widgets inside a Row or Column layout.

Use AsyncValue.guard rather than try/catch inside your AsyncNotifier subclasses

Use AsyncValue.guard rather than try/catch inside your AsyncNotifier subclasses

#dart
#flutter
#riverpod

If you have many AsyncNotifier subclasses, using try/catch can be tedious. With AsyncValue.guard you get the same result with less boilerplate.

How to style an ElevatedButton in Flutter

How to style an ElevatedButton in Flutter

#dart
#flutter
#widgets

How to style an ElevatedButton in Flutter, including reusing the same style across all buttons with ThemeData.

Running tests with GitHub Actions

Running tests with GitHub Actions

#dart
#flutter
#CI

How to add a GitHub Actions workflow to automatically run tests when you push your code.

Add Fixed Spacing with the Gap Widget

Add Fixed Spacing with the Gap Widget

#dart
#flutter
#layouts

How to easily add fixed spacing inside Flex widgets such as Columns and Rows or scrolling views.

Flutter Pagination with Riverpod: The Ultimate Guide

Flutter Pagination with Riverpod: The Ultimate Guide

#dart
#flutter
#riverpod
#app-architecture
#ultimate-guide

A complete guide to implementing pagination with Riverpod, covering: infinite scrolling, loading and error states, search UI, caching, and debouncing.

How to Build and Deploy a Dart Shelf App on Globe.dev

How to Build and Deploy a Dart Shelf App on Globe.dev

#dart
#flutter
#shelf
#security
#backend

Learn how to build and deploy a Dart Shelf App that taps into the OpenAI API without exposing the API key in your Flutter client.

How to Publish your Flutter Web Apps on GitHub Pages for Free

How to Publish your Flutter Web Apps on GitHub Pages for Free

#dart
#flutter
#flutter-web

A step-by-step tutorial showing how to deploy your Flutter web apps to GitHub Pages using Makefiles.

We Need To Talk About FlutterFlow

We Need To Talk About FlutterFlow

#dart
#flutter
#flutterflow

Is FlutterFlow the real deal? Or should you ignore it and continue building apps the old-fashioned way? Here's my take as an experienced developer.

What’s Next on Code with Andrea

What’s Next on Code with Andrea

#flutter
#content-creation
#meta

This year, I'm planning to launch a new Discord server, a new course platform, improve my newsletter, release new Flutter courses, and much more!

GitHub Copilot: Tips and Tricks for Flutter Devs

GitHub Copilot: Tips and Tricks for Flutter Devs

#dart
#flutter
#ai

A tour of the new Copilot features. Learn how its AI assists with code, tests, and commits, and find out if it's right for your Flutter projects.

Flutter Deep Linking: The Ultimate Guide

Flutter Deep Linking: The Ultimate Guide

#dart
#flutter
#navigation
#gorouter
#ultimate-guide

A step-by-step tutorial showing how to implement deep links in Flutter using GoRouter, including the native Android and iOS platform setup.

When to use Realtime Updates vs One-Time Reads in Your Flutter Apps

When to use Realtime Updates vs One-Time Reads in Your Flutter Apps

#dart
#flutter
#firebase
#riverpod

Find out when to use one-time reads and when to switch to realtime updates in Flutter development for optimal app performance and user experience.

8 Steps to Follow When Building Your Next Flutter App

8 Steps to Follow When Building Your Next Flutter App

#flutter
#firebase
#productivity

A helpful guide for your next Flutter app, providing insights from UX flows selection to GitHub boards and processes for efficient execution.

What are Webhooks and How to Use Them in Your Flutter Backend

What are Webhooks and How to Use Them in Your Flutter Backend

#dart
#flutter
#firebase
#cloud-functions

An introduction to webhooks for Flutter developers, showing how to create, register, and secure a Stripe webhook using Firebase Cloud Functions.

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

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

#dart
#flutter
#riverpod
#app-architecture
#design-patterns

When building mobile apps, we often need to fetch and mutate data. This article explains how to do it effectively using my reference Riverpod architecture.

Flutter App Architecture: The Presentation Layer

Flutter App Architecture: The Presentation Layer

#dart
#flutter
#state-management
#app-architecture
#riverpod

How to implement controller classes that can hold business logic, manage widget state, and interact with repositories in the data layer.

A Comparison of Popular Flutter App Architectures

A Comparison of Popular Flutter App Architectures

#dart
#flutter
#riverpod
#app-architecture
#design-patterns

Comparing my Riverpod App Architecture with other popular ones such as MVC, MVVM, Bloc, Stacked, Clean Architecture, and Android App Architecture.

Flutter App Architecture with Riverpod: An Introduction

Flutter App Architecture with Riverpod: An Introduction

#dart
#flutter
#riverpod
#app-architecture
#design-patterns

Introducing a new Riverpod App Architecture that can be used to build scalable and maintainable apps with a clear structure.

Flutter Navigation with GoRouter: Go vs Push

Flutter Navigation with GoRouter: Go vs Push

#dart
#flutter
#navigation

An in-depth explanation of the difference between Go and Push when using GoRouter for declarative routing.

How to Parse JSON in Dart/Flutter: The Ultimate Guide

How to Parse JSON in Dart/Flutter: The Ultimate Guide

#dart
#flutter
#networking
#json
#ultimate-guide

Learn how to parse JSON and define type-safe model classes that can handle validation, nullable/optional values, and complex/nested JSON data (updated to Dart 3).

Flutter Bottom Navigation Bar with Stateful Nested Routes using GoRouter

Flutter Bottom Navigation Bar with Stateful Nested Routes using GoRouter

#dart
#flutter
#navigation
#gorouter

How to implement bottom and side navigation with stateful nested routes in Flutter using the GoRouter package (example app with source code included).

Flutter Exception Handling with try/catch and the Result type

Flutter Exception Handling with try/catch and the Result type

#dart
#flutter
#error-handling

How to use sealed classes to create a Result type that makes it explicit when a function can return an error, rather than throwing an exception.

Flutter & Firebase Auth on macOS: Resolving Common Issues

Flutter & Firebase Auth on macOS: Resolving Common Issues

#dart
#flutter
#firebase

Getting a Flutter & Firebase app to work on macOS is a tricky endeavour. Follow this step-by-step guide to get it working.

What’s New in Dart 3: Introduction

What’s New in Dart 3: Introduction

#dart
#flutter

An overview of the major features introduced in Dart 3, including: records, patterns, switch expressions, sealed classes, and class modifiers.

How to use Abstraction and the Repository Pattern Effectively in your Flutter apps

How to use Abstraction and the Repository Pattern Effectively in your Flutter apps

#dart
#flutter
#app-architecture
#firebase
#firestore

An in-depth overview of what abstractions to use to write backend-agnostic code that is more testable and maintainable, along with their tradeoffs.

Firebase Pros and Cons (for Flutter app development)

Firebase Pros and Cons (for Flutter app development)

#dart
#flutter
#firebase
#firestore

An overview of Firebase as a BaaS platform, including available features, supported platforms, pricing, portability, documentation, and developer experience.

Firestore Pagination Made Easy with FirestoreListView in Flutter

Firestore Pagination Made Easy with FirestoreListView in Flutter

#dart
#flutter
#firebase
#firestore

A simple guide showing how to use the FirestoreListView widget to enable pagination when loading large collections of documents from Firestore.

How to write Flutter apps faster with Riverpod Lint & Riverpod Snippets

How to write Flutter apps faster with Riverpod Lint & Riverpod Snippets

#dart
#flutter
#state-management
#riverpod

The new Riverpod Lint package adds useful lints and refactoring options that make writing Flutter apps a breeze. Here's how to make the most of it.

How to use Notifier and AsyncNotifier with the new Flutter Riverpod Generator

How to use Notifier and AsyncNotifier with the new Flutter Riverpod Generator

#dart
#flutter
#state-management
#riverpod

A step-by-step guide showing how to migrate StateProvider and StateNotifier to the new Notifier and AsyncNotifier classes (StreamNotifier is covered too).

How to Auto-Generate your Providers with Flutter Riverpod Generator

How to Auto-Generate your Providers with Flutter Riverpod Generator

#dart
#flutter
#state-management
#riverpod

Thanks to the new Riverpod Generator package, we no longer have to declare providers manually. This guide explains how to use the new @riverpod syntax.

How to Check if an AsyncNotifier is Mounted with Riverpod

How to Check if an AsyncNotifier is Mounted with Riverpod

#dart
#flutter
#riverpod

AsyncNotifier does not have a mounted property and this can cause some problems in practice. This article explores some solutions and their tradeoffs.

Using context.mounted in Flutter 3.7

Using context.mounted in Flutter 3.7

#dart
#flutter
#navigation

Since Flutter 3.7, BuildContext has a mounted property that we can check after an asynchronous gap. Here's how to use it.

How to Navigate Without Context with GoRouter and Riverpod in Flutter

How to Navigate Without Context with GoRouter and Riverpod in Flutter

#dart
#flutter
#gorouter
#navigation
#riverpod

Let's explore some techniques to separate our business logic and navigation code from the UI, using GoRouter and Riverpod.

How to update old Flutter projects with Dart Fix --apply

How to update old Flutter projects with Dart Fix --apply

#dart
#flutter

An overview of what Dart Fix can do for you, along with some useful VSCode productivity tips and settings for Flutter app development.

Dart & Flutter with ChatGPT: Is it worth it?

Dart & Flutter with ChatGPT: Is it worth it?

#dart
#flutter
#firebase
#ai

I asked ChatGPT to explain some code and write several programs in Dart & Flutter. Here's a full report with my findings, and some tips to make the most of it.

Riverpod Data Caching and Providers Lifecycle: Full Guide

Riverpod Data Caching and Providers Lifecycle: Full Guide

#dart
#flutter
#state-management
#riverpod

Riverpod is a powerful reactive caching and data-binding framework. Let’s learn how to make the most of it so we can use it effectively.

How to Unit Test AsyncNotifier Subclasses with Riverpod 2.0 in Flutter

How to Unit Test AsyncNotifier Subclasses with Riverpod 2.0 in Flutter

#dart
#flutter
#state-management
#riverpod
#testing

AsyncNotifier is great. But how do we write unit tests for it? Here are all the details and a template you can follow to test your AsyncNotifier subclasses.

Flutter Riverpod 2.0: The Ultimate Guide

Flutter Riverpod 2.0: The Ultimate Guide

#dart
#flutter
#state-management
#riverpod
#ultimate-guide

A complete guide to the Riverpod package as a reactive caching and data-binding framework. Fully updated to Riverpod 2.0.

How to Read Localized Strings Outside the Widgets using Riverpod

How to Read Localized Strings Outside the Widgets using Riverpod

#dart
#flutter
#localization
#riverpod

How to access localized strings outside your widgets without a BuildContext, by creating a locale-aware AppLocalizations provider using Riverpod.

How to fix

How to fix "SocketException: Connection failed (Operation not permitted)" with Flutter on macOS

#dart
#flutter
#networking

Flutter apps built for macOS need a client network entitlement in order to make network requests. Here's how to configure it.

Functional Error Handling with Either and fpdart in Flutter: An Introduction

Functional Error Handling with Either and fpdart in Flutter: An Introduction

#dart
#flutter
#error-handling

Fpdart aims to bring all the main types found in functional languages to Dart. Here we focus on the Either type and learn how to use it for robust error handling.

Flutter Riverpod: How to Register a Listener during App Startup

Flutter Riverpod: How to Register a Listener during App Startup

#dart
#flutter
#riverpod
#state-management

An overview of how we can use Riverpod to register listeners and initialize complex objects with dependencies during app startup.

Singletons in Flutter: How to Avoid Them and What to do Instead

Singletons in Flutter: How to Avoid Them and What to do Instead

#dart
#flutter
#app-architecture
#design-patterns

An introduction to singletons in Flutter: what problems they solve, what other ones they introduce, and what are their alternatives.

Flutter App Architecture: The Application Layer

Flutter App Architecture: The Application Layer

#dart
#flutter
#state-management
#app-architecture
#riverpod

Service classes are the ideal place to store logic that depends on multiple data sources or repositories. Let's explore them by building a shopping cart feature.

The Beginner's Guide to Asking Coding Questions Online

The Beginner's Guide to Asking Coding Questions Online

#dart
#flutter

Asking questions and receiving answers is a two-way street. Here's what to do when you need to ask a technical coding question.

How to Create DartPad Examples from GitHub Gists

How to Create DartPad Examples from GitHub Gists

#dart
#flutter

DartPad makes it easy to share your Dart & Flutter samples using GitHub gists, and you can even embed them on your website. Here's how.

How to Add a Custom Test Timeout in Flutter

How to Add a Custom Test Timeout in Flutter

#dart
#flutter
#testing

When a test waits for a stream value that is never emitted, it will timeout after 30 seconds (by default). Here's how to make it fail fast with a custom timeout.

How to Write Tests using Stream Matchers and Predicates in Flutter

How to Write Tests using Stream Matchers and Predicates in Flutter

#dart
#flutter
#testing

The Flutter testing APIs offer some powerful stream matchers and predicates that we can use to verify state changes over time. Let's see how to use them in practice.

How to Use Super Initializers in Dart 2.17

How to Use Super Initializers in Dart 2.17

#dart
#flutter

Since Dart 2.17, you can initialize parameters of the super class with a new shorthand syntax. Here's how.

How to Use Enhanced Enums with Members in Dart 2.17

How to Use Enhanced Enums with Members in Dart 2.17

#dart
#flutter

Since Dart 2.17, we can add members and additional methods when declaring an enum. Here's how.

How to Test Functions that Throw in Flutter

How to Test Functions that Throw in Flutter

#dart
#flutter
#testing

When writing tests for functions that throw, we should not invoke them directly, but rather pass them as arguments using a tear-off.

How to update a Map of key-value pairs in Dart

How to update a Map of key-value pairs in Dart

#dart
#flutter

Ever needed to update a value if a given key already exists, or set it if it doesn't? Here's how to use the Map.update() method to solve this.

How to Generate and Analyze a Flutter Test Coverage Report in VSCode

How to Generate and Analyze a Flutter Test Coverage Report in VSCode

#dart
#flutter
#testing

How to use the flutter tool generate a test coverage report for your app or package, and improve your testing workflow with two helpful VSCode extensions.

Flutter Project Structure: Feature-first or Layer-first?

Flutter Project Structure: Feature-first or Layer-first?

#dart
#flutter
#app-architecture

An overview of the feature-first and layer-first approaches when choosing a project structure for medium/large Flutter apps, along with their tradeoffs and common pitfalls.

Flutter Riverpod Tip: Use AsyncValue rather than FutureBuilder or StreamBuilder

Flutter Riverpod Tip: Use AsyncValue rather than FutureBuilder or StreamBuilder

#dart
#flutter
#riverpod
#state-management

The AsyncValue class from the Riverpod package offers a much nicer API compared to AsyncSnapshot from the FutureBuilder and StreamBuilder widgets. Here's how to use it.

Flutter App Architecture: The Domain Model

Flutter App Architecture: The Domain Model

#dart
#flutter
#app-architecture

An introduction to the domain model and its role in defining entities and the business logic for manipulating them in the context of Flutter app architecture.

Simplified Flutter Localization using a BuildContext extension

Simplified Flutter Localization using a BuildContext extension

#dart
#flutter
#localization

How to simplify the Flutter skeleton app template to more easily access localized strings inside our widgets.

Flutter App Architecture: The Repository Pattern

Flutter App Architecture: The Repository Pattern

#dart
#flutter
#app-architecture
#design-patterns

An in-depth overview of the repository pattern in Flutter: what it is, when to use it, and various implementation strategies along with their tradeoffs.

How to handle loading and error states with StateNotifier & AsyncValue in Flutter

How to handle loading and error states with StateNotifier & AsyncValue in Flutter

#dart
#flutter
#state-management
#riverpod

When performing asynchronous work, we need to account for loading and error states in our UI. This article presents simple and reusable approach to handle this across multiple screens.

How to speed-up Cloud Firestore Xcode builds on your Flutter apps

How to speed-up Cloud Firestore Xcode builds on your Flutter apps

#flutter
#firebase
#devops

How to use the precompiled Firestore iOS SDKs to speed-up Xcode builds on your Flutter apps.

How to Parse Large JSON Data with Isolates in Dart 2.15

How to Parse Large JSON Data with Isolates in Dart 2.15

#dart
#flutter
#json
#networking

How to parse large JSON data using compute, Isolate.spawn, and Isolate.exit - a new feature for fast concurrency with worker isolates in Dart 2.15.

Responsive layouts in Flutter: Split View and Drawer Navigation

Responsive layouts in Flutter: Split View and Drawer Navigation

#dart
#flutter
#layouts
#state-management
#riverpod

How to implement a responsive layout in Flutter by using a split view on large screens and drawer navigation on mobile.

How to create a Flutter GridView with content-sized items

How to create a Flutter GridView with content-sized items

#dart
#flutter
#layouts

GridView is only suitable for items with a fixed aspect ratio. Here's how to use the flutter_layout_grid package to render responsive layouts with variable item sizes.

Flutter Web vs HTML, CSS & JS: Performance Comparison

Flutter Web vs HTML, CSS & JS: Performance Comparison

#dart
#flutter
#flutter-web

And in-depth performance comparison of my new home page, built with Flutter web vs standard web technologies. All benchmarks were run with Google PageSpeed Insights and WebPageTest.org.

Flutter Tutorial: How to use the Firebase Local Emulator with Cloud Functions

Flutter Tutorial: How to use the Firebase Local Emulator with Cloud Functions

#dart
#flutter
#firebase
#cloud-functions

Let's build a simple mood tracking app and learn how to work with Firestore, Cloud Functions, and the Firebase Local Emulator.

Flutter TabBar Tutorial: How to Navigate Programmatically Between Tabs

Flutter TabBar Tutorial: How to Navigate Programmatically Between Tabs

#dart
#flutter
#navigation

Learn how to use the Flutter TabBar widget to take the user through a sequence of pages, and disable user interaction on the tabs themselves.

Flutter TextField Validation: How to work with TextEditingController, Form, and TextFormField

Flutter TextField Validation: How to work with TextEditingController, Form, and TextFormField

#dart
#flutter
#input-validation

A tutorial about text input validation, showing how to work with TextField, TextEditingController, Form, TextFormField as well as their tradeoffs.

AsyncValueWidget: a reusable Flutter widget to work with AsyncValue (using Riverpod)

AsyncValueWidget: a reusable Flutter widget to work with AsyncValue (using Riverpod)

#dart
#flutter
#state-management
#riverpod

How to create a reusable widget class that helps us when working with asynchronous data from Riverpod providers.

How to build a Chat Messaging UI in Flutter

How to build a Chat Messaging UI in Flutter

#dart
#flutter
#layouts

A simple and elegant approach to build a Chat Messaging UI with DecoratedBox, Align, and Padding widgets in Flutter.

Apple Sign In with Flutter & Firebase Authentication

Apple Sign In with Flutter & Firebase Authentication

#flutter
#firebase
#authentication

How to implement Apple Sign In with Flutter & Firebase Authentication (from scratch), and give your iOS users a convenient way of signing into your app.

Flutter State Management Basics and Useful Resources

Flutter State Management Basics and Useful Resources

#dart
#flutter
#state-management

An overview of Flutter's built-in widgets for managing state, along with links to the best resources from the official Flutter documentation.

Starter Architecture for Flutter & Firebase Apps using Riverpod

Starter Architecture for Flutter & Firebase Apps using Riverpod

#flutter
#dart
#firebase
#app-architecture
#riverpod
#design-patterns

A detailed overview of a production-ready architecture that I've fine-tuned over the last two years. You can use the included starter project as the foundation for your Flutter & Firebase apps.

Flutter: Animated Task Completion Ring with AnimationController and AnimatedBuilder

Flutter: Animated Task Completion Ring with AnimationController and AnimatedBuilder

#dart
#flutter
#animations

How to animate a custom task completion ring using AnimationController and AnimatedBuilder in Flutter.

Flutter: How to Draw a Task Completion Ring with CustomPainter

Flutter: How to Draw a Task Completion Ring with CustomPainter

#dart
#flutter
#animations

CustomPainter is often the way to go when we need to draw some custom shapes in Flutter. Let's see how to use it in practice.

Migrating a Flutter & Firebase app to Null Safety: A Case Study

Migrating a Flutter & Firebase app to Null Safety: A Case Study

#dart
#flutter
#null-safety

Migrating Flutter apps to Null Safety can be a challenging process. Here I show how to make this as painless as possible, using a non-trivial app as an example.

Flutter Timer vs Ticker: A Case Study

Flutter Timer vs Ticker: A Case Study

#dart
#flutter
#animations

Need a Flutter widget that updates every frame? Here's why using Timer is not a good choice, and why Ticker is a much better solution.

How to Parse JSON in Dart/Flutter with Code Generation using Freezed

How to Parse JSON in Dart/Flutter with Code Generation using Freezed

#dart
#flutter
#json
#code-generation
#freezed

Tired of writing JSON parsing code by hand? Here's how to automate this with code generation and the Freezed package.

Side Effects in Flutter: What they are and how to avoid them

Side Effects in Flutter: What they are and how to avoid them

#dart
#flutter
#state-management

Mutating state or calling async code inside the build method can cause unwanted widget rebuilds and unintended behaviour. Here are some examples and rules to follow.

How to implement a shake text effect in Flutter

How to implement a shake text effect in Flutter

#dart
#flutter
#animations

How to create a custom animation curve and implement a shake effect that can be applied to any widget in Flutter.

Learn Flutter Animations by Example + Free Gallery App on GitHub

Learn Flutter Animations by Example + Free Gallery App on GitHub

#dart
#flutter
#animations

Learn how to use the most common Flutter animation APIs with examples and a free gallery app on GitHub.

How to build any kind of app in Flutter (and overcome Tutorial Hell)

How to build any kind of app in Flutter (and overcome Tutorial Hell)

#flutter
#career
#productivity

Tips for learning how to build your own Flutter apps, overcome Tutorial Hell, and figure out what to do when you get stuck.

Colors / Numbers Game with Flutter Implicit Animations

Colors / Numbers Game with Flutter Implicit Animations

#dart
#flutter
#animations

How to use animations in Flutter to spice up a fun game written in Dartpad. Learn about implicit animations, AnimatedAlign, duration and curves.

Flutter: Why do TweenAnimationBuilder and AnimatedBuilder have a child argument?

Flutter: Why do TweenAnimationBuilder and AnimatedBuilder have a child argument?

#dart
#flutter
#animations

Why and when to use the child widget argument to optimize Flutter performance when working with TweenAnimationBuilder and AnimatedBuilder.

How to reduce AnimationController boilerplate code: Flutter Hooks vs extending the State class

How to reduce AnimationController boilerplate code: Flutter Hooks vs extending the State class

#dart
#flutter
#animations

How to use Flutter Hooks or State subclassing to reduce your AnimationController boilerplate code.

HSL Colors Explained: What they are and when to use them in Dart/Flutter

HSL Colors Explained: What they are and when to use them in Dart/Flutter

#dart
#flutter

Going from RGB to HSL: How to more easily reason about colors as hue, saturation and lightness, and how to use HSL in Flutter.

Flutter Animations: Interactive Page Flip Widget [Part 2]

Flutter Animations: Interactive Page Flip Widget [Part 2]

#dart
#flutter
#animations

How to build an interactive page flip widget using Flutter's AnimationController, AnimationBuilder, gesture detectors and custom 3D matrix transforms (part 2).

Flutter Animations: Interactive Page Flip Widget

Flutter Animations: Interactive Page Flip Widget

#dart
#flutter
#animations

How to build an interactive page flip widget using Flutter's AnimationController, AnimationBuilder, gesture detectors and custom 3D matrix transforms (part 1).

How to disable the default Widget splash effect in Flutter

How to disable the default Widget splash effect in Flutter

#flutter
#dart

Many Material widgets such as InkWell, ElevatedButton, and ListTile show a splash effect when selected. Here's how to disable this.

Flutter State Management: Going from setState to Freezed & StateNotifier with Provider

Flutter State Management: Going from setState to Freezed & StateNotifier with Provider

#dart
#flutter
#state-management
#provider
#freezed

Mixing UI and logic inside Flutter widgets is bad. Here's how to refactor a simple app for better separation of concerns, immutability, and type safety using Freezed & State Notifier.

How to speed up code generation with build_runner in Dart & Flutter

How to speed up code generation with build_runner in Dart & Flutter

#flutter
#dart
#code-generation
#freezed

Two effective techniques for reducing code generation times for Flutter apps that use build_runner.

Flutter vs React Native - Which is the Best Choice for Your Next App?

Flutter vs React Native - Which is the Best Choice for Your Next App?

#flutter
#react-native
#dart

Should you choose Flutter or React Native for your next app? This article offers an in-depth overview of the two frameworks, along with their pros and cons.

My 2020 Christmas Gift: Free Flutter Example Apps on GitHub

My 2020 Christmas Gift: Free Flutter Example Apps on GitHub

#dart
#flutter

I published a directory of all my open source Flutter apps and projects on GitHub. Here's where to find it.

Flutter Bottom Navigation Bar with Multiple Navigators: A Case Study

Flutter Bottom Navigation Bar with Multiple Navigators: A Case Study

#flutter
#dart
#navigation

A guide to implementing multiple independent navigation stacks with BottomNavigationBar in Flutter.

'keytool' is not recognized as an internal or external command: How to fix this on Windows and macOS

'keytool' is not recognized as an internal or external command: How to fix this on Windows and macOS

#android
#flutter

This step-by-step guide shows how to install keytool and add it to your system PATH on Windows and macOS.

Top 16 Dart Tips and Tricks Every Flutter Developer Should Know

Top 16 Dart Tips and Tricks Every Flutter Developer Should Know

#dart
#flutter

A curated list of useful Dart tips that will improve your coding style as a Flutter developer.

Dart & Flutter Easy Wins 36-42

Dart & Flutter Easy Wins 36-42

#flutter
#dart

Easy ways to improve your Dart & Flutter code. Published weekly.

Dart & Flutter Easy Wins 29-35

Dart & Flutter Easy Wins 29-35

#flutter
#dart

Easy ways to improve your Dart & Flutter code. Published weekly.

Dart & Flutter Easy Wins 22-28

Dart & Flutter Easy Wins 22-28

#flutter
#dart

Easy ways to improve your Dart & Flutter code. Published weekly.

Dart & Flutter Easy Wins 15-21

Dart & Flutter Easy Wins 15-21

#flutter
#dart

Easy ways to improve your Dart & Flutter code. Published weekly.

Dart & Flutter Easy Wins 8-14

Dart & Flutter Easy Wins 8-14

#flutter
#dart

Easy ways to improve your Dart & Flutter code. Published weekly.

Dart & Flutter Easy Wins 1-7

Dart & Flutter Easy Wins 1-7

#flutter
#dart

Easy ways to improve your Dart & Flutter code. Published weekly.

How to Create Dart Packages for Your Flutter Apps

How to Create Dart Packages for Your Flutter Apps

#flutter
#dart

How to create your own Dart packages from existing apps, and other things you need to know.

Top 8 Pro Tips for Flutter Web Apps using Firebase

Top 8 Pro Tips for Flutter Web Apps using Firebase

#flutter
#flutter-web
#dart
#firebase

8 top tips that will save you time in your Flutter web projects.

RxDart by example: querying the GitHub Search API with switchMap & debounce

RxDart by example: querying the GitHub Search API with switchMap & debounce

#flutter
#dart
#rxdart
#search

Best practices for implementing search with RxDart in Flutter, using the GitHub Search REST API as an example.

RxDart by example: combineLatest and data modeling with Firestore

RxDart by example: combineLatest and data modeling with Firestore

#flutter
#dart
#rxdart
#firestore
#firebase

In-depth tutorial explaning combineLatest and data modeling with movie favourite example Flutter app.

Hide your Firebase config with .gitignore in Flutter web projects

Hide your Firebase config with .gitignore in Flutter web projects

#flutter
#dart
#firebase
#flutter-web
#git

A useful tip to hide your Firebase config from git in your Flutter web projects.

Take Home Project for Flutter Job Interview - Firebase version

Take Home Project for Flutter Job Interview - Firebase version

#flutter
#dart
#firebase
#interview
#career

Take-home projects are a task often given to candidates during the interview process. This article shows a hypothetical assignment that I would give to candidates interviewing for a Flutter developer role.

Flutter Custom Painting: Do Not Fear The Canvas

Flutter Custom Painting: Do Not Fear The Canvas

#flutter
#dart
#canvas
#painting

This tutorial shows how to use Flutter custom painters to draw a happy face on screen with Dartpad, starting from scratch. Included: drawing custom shapes with Canvas and Paint, and layout considerations when using CustomPainter.

Easily move the focus between TextFormFields with FocusScopeNode

Easily move the focus between TextFormFields with FocusScopeNode

#flutter
#dart

FocusScopeNode provides a simpler way of move the focus between text fields in your Flutter forms.

Using underscores for unused builder arguments in Dart

Using underscores for unused builder arguments in Dart

#flutter
#dart
#design-patterns

How to remove some noise in your Dart code by using underscores for unused function arguments.

Adding top and bottom separators with ListView.separated

Adding top and bottom separators with ListView.separated

#flutter
#dart
#layouts

How to make your ListViews feel native on iOS by adding top and bottom separators.

Launching CodeWithAndrea.com

Launching CodeWithAndrea.com

#flutter
#dart
#meta

CodeWithAndrea.com is a brand new website about high-quality Flutter tutorials. It will contain all my YouTube videos, articles and courses.

What's great about Flutter?

What's great about Flutter?

#flutter
#dart

Evaluating Flutter from various criteria: Portability, Language Tooling and Features, Documentation, Performance, Testing, Community, Package Ecosystem, Maintainer Commitment and many more.

Dart Extensions: Full Introduction and Practical Use Cases

Dart Extensions: Full Introduction and Practical Use Cases

#flutter
#dart
#extensions

Dart extensions unlock a few interesting use cases in Flutter apps. This tutorial shows how to enable them, what they are, when to use them, and when not to.

Case Study: Automating UI/Integration Tests with Flutter Driver and Codemagic

Case Study: Automating UI/Integration Tests with Flutter Driver and Codemagic

#flutter
#dart
#testing
#CI

Let's see how to write integration tests with Flutter Driver, how they differ from widget tests, and how to run them with Codemagic.

Flutter Slivers Overview: SliverList, SliverGrid, SliverToBoxAdapter, SliverFillRemaining

Flutter Slivers Overview: SliverList, SliverGrid, SliverToBoxAdapter, SliverFillRemaining

#flutter
#dart
#layouts

In-depth overview of Slivers and how to use them (part 2). Includes a demo app showing how to use SliverList, SliverGrid, SliverToBoxAdapter, SliverFillRemaining.

Flutter Slivers Overview: SliverAppBar, SliverPersistentHeader

Flutter Slivers Overview: SliverAppBar, SliverPersistentHeader

#flutter
#dart
#layouts

In-depth overview of Slivers and how to use them (part 1). Includes a demo app showing how to use SliverAppBar and SliverPersistentHeader.

Dart Features For Better Code: Spreads, Collection-If, Collection-For

Dart Features For Better Code: Spreads, Collection-If, Collection-For

#flutter
#dart

Overview of the 'Dart as UI' features introduced in Dart 2.3. Uses a fitness tracker custom UI as an example.

Dart Features for Better Code: Types and working with parameters

Dart Features for Better Code: Types and working with parameters

#flutter
#dart

Overview and practical use cases of type inference, final & const, named & positional parameters, @required & default values.

Flutter: Designing an Authentication API with Service Classes

Flutter: Designing an Authentication API with Service Classes

#flutter
#dart
#firebase
#authentication

Let's see how use service classes to encapsulate 3rd party libraries and APIs, and decouple them from the rest of the application. We will use authentication as a concrete example of this.

Flutter: Global Access vs Scoped Access with Provider

Flutter: Global Access vs Scoped Access with Provider

#flutter
#dart
#dependency-injection
#provider
#firebase
#authentication
#scoped-access

This article shows how to use scoped access with Provider when using service classes in our Flutter apps.

Super Simple Authentication Flow with Flutter & Firebase

Super Simple Authentication Flow with Flutter & Firebase

#flutter
#dart
#firebase
#authentication

In this article we implement a simple authentication flow in Flutter, in less than 100 lines of code.

Widget-Async-Bloc-Service: A Practical Architecture for Flutter Apps

Widget-Async-Bloc-Service: A Practical Architecture for Flutter Apps

#flutter
#dart
#bloc
#state-management

This article introduces a new architectural pattern that I often use in my Flutter Apps. It is inspired by BLoCs and RxVMS.

My 2018 year in review with Flutter

My 2018 year in review with Flutter

#business
#content-creation
#flutter
#meta

Retrospective article about my year as a Flutter developer, blogger and YouTuber in 2018.

Dart vs Swift: a comparison

Dart vs Swift: a comparison

#flutter
#dart
#swift
#ios

Detailed side-by-side comparison of language features between Dart 2.1 and Swift 4.2.

Flutter will change everything: A Follow Up

Flutter will change everything: A Follow Up

#flutter
#dart
#swift
#ios

Clarifications and apologies following my previous article.

Flutter will change everything, and is an excellent choice for iOS development

Flutter will change everything, and is an excellent choice for iOS development

#flutter
#dart
#swift
#ios

Controversial article with some history and a detailed comparison between Flutter and native iOS development. Includes an example showing how to build a contact list in Flutter and iOS.

Flutter: Platform Aware Widgets and Dialogs

Flutter: Platform Aware Widgets and Dialogs

#flutter
#dart

Tutorial showing how to switch between Material and Cupertino widgets, and increase code reuse by building a platform-aware abstract base class with concrete sub-classes. Includes an overview of dialogs and their platform-specific differences.

My Favourite List of Flutter Resources

My Favourite List of Flutter Resources

#flutter
#dart

Flutter is awesome! Big thanks to the Flutter team and all the people in the wider community that keep pushing this project to new heights and sharing new learning material.

Flutter: The power of small and reusable widgets

Flutter: The power of small and reusable widgets

#flutter
#dart
#layouts
#refactoring

Let's learn about color gradients, composition, writing reusable UI code, and CupertinoSegmentedControl.

Flutter: Building a Flight CO2 Calculator (Part 1)

Flutter: Building a Flight CO2 Calculator (Part 1)

#flutter
#dart

Let's see how to load a CSV file into strongly-typed model classes, that can be used to calculate CO2 emissions for flights between two airports.

Flutter: Input Validation with RegExp

Flutter: Input Validation with RegExp

#flutter
#dart
#input-validation

Overview of regular expressions (regex). How to implement a Regex validator in Dart and integrate it with Flutter's TextField widget, so that we can validate user input.

Flutter: Adding Animated Overlays to Your App

Flutter: Adding Animated Overlays to Your App

#flutter
#dart
#navigation
#layouts

Let's see how to use some custom code to add animated overlays and reveal action options from a FAB.

Flutter: BottomAppBar Navigation with FAB

Flutter: BottomAppBar Navigation with FAB

#flutter
#dart
#navigation
#layouts

How to dock a floating action button in the middle of a BottomAppBar.

Flutter: Deep Dive with Widget Tests and Mockito

Flutter: Deep Dive with Widget Tests and Mockito

#flutter
#dart
#testing

Deep dive into widget tests. Introduces WidgetTester, Finder, matcher objects, and shows how to write tests for a login screen. Includes test mocks, mockito, acceptance criteria.

Flutter: Add Unit Tests to Your App

Flutter: Add Unit Tests to Your App

#flutter
#dart
#testing

How to extract business logic from your apps into testable classes, and write unit tests in Flutter. Uses a login demo example to write email & password validation tests.

Flutter Layouts Walkthrough: PageView, ListView, GridView, Slivers, CustomScrollView

Flutter Layouts Walkthrough: PageView, ListView, GridView, Slivers, CustomScrollView

#flutter
#dart
#layouts

How to build layouts with scrollable pages, lists, grids, and other convenience widgets. Includes slivers and their usage to create a hero image effect.

IntelliJ / Android Studio Shortcuts for Flutter Development

IntelliJ / Android Studio Shortcuts for Flutter Development

#flutter
#dart
#productivity

List of the most useful IntelliJ/Android Studio shortcuts for better productivity.

Flutter Layouts Walkthrough: Row, Column, Stack, Expanded, Padding

Flutter Layouts Walkthrough: Row, Column, Stack, Expanded, Padding

#flutter
#dart
#layouts

How to build basic layouts in Flutter. Also included: MainAxisAlignment, MainAxisSize, CrossAxisAlignment, Baseline, AlignmentDirectional, LayoutBuilder, SizedBox.

Intro to Platform Channels: Building an Image Picker in Flutter

Intro to Platform Channels: Building an Image Picker in Flutter

#flutter
#dart
#platform-channels
#ios
#swift

Let's see how to use platform channels by building an image picker on iOS, and using it from the Dart code.

Take your Flutter tests to the next level with abstract classes and dependency injection

Take your Flutter tests to the next level with abstract classes and dependency injection

#flutter
#dart
#testing

This article shows how to write testable code in Flutter, and take your widget tests to the next level.

How fast is Flutter? I built a stopwatch app to find out

How fast is Flutter? I built a stopwatch app to find out

#flutter
#dart
#performance

In-depth performance comparison for a stopwatch app built in native iOS vs Flutter.

Browse all tags