A month of Flutter: awesome adaptive icons

For this festive day of Christmas, I'm going to do something more fun and add a fancy icon. For android I will be using an adaptive icon so that it looks good in any shape and has a nice wiggle of movement.

A big thank you goes to @tommy_emo_ for creating this awesome design.

Birb logo

There is a nice flutter_launcher_icons package that makes the technical implementation easy.

To start, require flutter_launcher_icons as a dev_dependency in pubspec.yaml. Then there will be a new flutter_icons key added with several values.

flutter_icons:
  android: true
  ios: true
  image_path_android: assets/icon/ic_launcher_xxxhdpi.png
  image_path_ios: assets/icon/ios.png
  adaptive_icon_background: assets/icon/ic_background.png
  adaptive_icon_foreground: assets/icon/ic_foreground.png

android and ios set to true specifies that the tool should build icons for both Android and iOS.

Then there are four images defined:

  • image_path_android will be used for the Android app and should be a full icon with transparent edges. This will get several sizes generated by the tool so I use the xxxhdpi size as the source image.
  • image_path_ios will be used for the iOS app and should not have any transparent edges. It is the same as the adaptive icon but with both layers in one image.
  • adaptive_icon_background is the background scene of the adaptive icon. For Birb it's the sun and hills.
  • adaptive_icon_foreground is the forground of the adaptive icon. For Birb it's the bird.

Once those four images were added to the assets/icon directory I ran the flutter_launcher_icons tool to generate the correct assets and added all the changes to git.

$ flutter packages pub run flutter_launcher_icons:main
Android minSdkVersion = 16
Creating default icons Android
Overwriting the default Android launcher icon with a new icon
Creating adaptive icons Android
Overwriting default iOS launcher icon with new icon

The new icon on Android's home screen with a rounded square shape:

Birb logo on Android home screen

The new icon in Android's app switcher with a circle shape:

Birb logo on Android app switcher

The new icon on iOS's home screen:

Birb logo on iOS home screen

The new icon in iOS's app switcher:

Birb logo on iOS app switcher

Code changes

Posts in this series

  • A month of Flutter
  • A month of Flutter: create the app
  • A month of Flutter: configuring continuous integration
  • A month of Flutter: continuous linting
  • A month of Flutter: upgrading to 1.0
  • A month of Flutter: initial theme
  • A month of Flutter: no content widget
  • A month of Flutter: a list of posts
  • A month of Flutter: extract post item widget
  • A month of Flutter: post model and mock data
  • A month of Flutter: rendering a ListView with StreamBuilder
  • A month of Flutter: Stream transforms and failing tests
  • A month of Flutter: real faker data
  • A month of Flutter: rendering network images
  • A month of Flutter: FABulous authentication
  • A month of Flutter: configure Firebase Auth for Sign in with Google on Android
  • A month of Flutter: configure Firebase Auth for Sign in with Google on iOS
  • A month of Flutter: Sign in with Google
  • A month of Flutter: mocking Firebase Auth in tests
  • A month of Flutter: delicious welcome snackbar
  • A month of Flutter: navigate to user registration
  • A month of Flutter: user registration form
  • A month of Flutter: testing forms
  • A month of Flutter: setting up Firebase Firestore
  • A month of Flutter: awesome adaptive icons
  • A month of Flutter: set up Firestore rules tests
  • A month of Flutter: Firestore create user rules and tests
  • A month of Flutter: WIP save users to Firestore
  • A month of Flutter: user registration refactor with reactive scoped model
  • A month of Flutter: the real hero animation
  • A month of Flutter: a look back

  • Category: Development