Flutter Tips

Code samples and useful tips for day-to-day Flutter app development.

Download my Flutter Tips app to get all the latest tips on your phone.

Flutter Tips
Testing Functions That Throw

Testing Functions That Throw

#dart
#flutter
#testing

When writing test expectations for functions that throw, we need a bit careful. To avoid surprises, always pass a closure inside the expect method.

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

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

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

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

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

Add Fixed Spacing with the Gap Widget

Add Fixed Spacing with the Gap Widget

#dart
#flutter
#CI

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

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.

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 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.

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.

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 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 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 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.

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.

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.

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.

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.

All Tutorials

Articles

Browse all 90 articles

Videos

Browse all 34 videos

Tips

Browse all 31 tips