launcher_icon_switcher 0.0.2 copy "launcher_icon_switcher: ^0.0.2" to clipboard
launcher_icon_switcher: ^0.0.2 copied to clipboard

A Flutter plugin that allows you to switch your app launcher icon or check the currently set one.

Launcher Icon Switcher #

pub version likes popularity pub points license

A Flutter plugin that allows you to dynamically change your app launcher icon.

iOS  Android

Generating icons #

First you'll need to generate some icons for your app. For that you can use flutter_launcher_icons package. Use CamelCase for your IOS icon names, as these same names will also be used for activity aliases on Android. Your config might look something like this:

flutter_launcher_icons:
  android: "snake_case_icon"
  ios: "CamelCaseIcon"
  remove_alpha_ios: true
  image_path_ios: "assets/launcher/icon-ios.png"
  image_path_android: "assets/launcher/icon-android.png"

Platform Setup #

For this plugin to work correctly there needs to be some platform specific setup. Check below on how to add support for Android and iOS

Android

Add Activity Aliases #

Once you have generated the Android icons, you can use them as launcher icons by adding activity aliases. To do so, disable your main activity in the AndroidManifest.xml file and add activity-alias elements for each icon like this:

<activity
    android:name=".MainActivity"
    android:exported="true"
    android:launchMode="singleTop"
    android:theme="@style/LaunchTheme"
    android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
    android:hardwareAccelerated="true"
    android:windowSoftInputMode="adjustResize"
    android:enabled="false"
    >
    <meta-data
        android:name="io.flutter.embedding.android.NormalTheme"
        android:resource="@style/NormalTheme"
        />
    <intent-filter>
        <action android:name="android.intent.action.MAIN"/>
        <category android:name="android.intent.category.LAUNCHER"/>
    </intent-filter>
</activity>
<activity-alias
    android:name=".DefaultIcon"
    android:icon="@mipmap/default_icon"
    android:enabled="true"
    android:exported="true"
    android:targetActivity=".MainActivity">
    <intent-filter>
        <action android:name="android.intent.action.MAIN"/>
        <category android:name="android.intent.category.LAUNCHER"/>
    </intent-filter>
</activity-alias>
<activity-alias
    android:name=".AdditionalIcon"
    android:icon="@mipmap/additional_icon"
    android:enabled="false"
    android:exported="true"
    android:targetActivity=".MainActivity">
    <intent-filter>
        <action android:name="android.intent.action.MAIN"/>
        <category android:name="android.intent.category.LAUNCHER"/>
    </intent-filter>
</activity-alias>

Make sure, that the only enabled alias is the default one.

iOS

Enable IOS Alternate App Icons #

Open your ios project in Xcode, select your app target, go to Build Settings tab and add the following changes:

  • enable Include All App Icon Assets option
  • and all your icons to Alternate App Icon Sets
  • set Primary App Icon Set Name to your default icon

Usage #

Congratulations, you can now use the plugin!!! 🥳🎉🎊

Setup #

First of all you need to initialize the plugin with your icons:

LauncherIconSwitcher().initialize(['DefaultIcon', 'AdditionalIcon', 'OneMoreIcon'], 'DefaultIcon');

Retreving current icon #

To know which icon is currently enabled call

LauncherIconSwitcher().getCurrentIcon();

Updating launcher icon #

In order to set new icon as your launcher icon call

LauncherIconSwitcher().setIcon('AdditionalIcon');

For a more detailed usage example, see here.

18
likes
160
points
301
downloads

Publisher

unverified uploader

Weekly Downloads

A Flutter plugin that allows you to switch your app launcher icon or check the currently set one.

Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (license)

Dependencies

flutter, plugin_platform_interface

More

Packages that depend on launcher_icon_switcher