✅ Android
❌ iOS (active issue: iOS support)
All the features listed below can be performed at the runtime.
✅ Change App Icons
✅ Change App Label
dependencies:
live_icon: <latest version>
...
...
<application
android:label="live_icon_example"
android:icon="@mipmap/ic_launcher">
<activity
android:name=".MainActivity"
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">
<meta-data
android:name="io.flutter.embedding.android.NormalTheme"
android:resource="@style/NormalTheme"
/>
<meta-data
android:name="io.flutter.embedding.android.SplashScreenDrawable"
android:resource="@drawable/launch_background"
/>
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<!-- Live Icon Addition -->
<activity-alias
android:name=".DarkTheme"
android:enabled="false"
android:icon="@mipmap/dark_theme"
android:label="DarkThemeLabel"
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=".LightTheme"
android:enabled="false"
android:icon="@mipmap/light_theme"
android:label="LightThemeLabel"
android:targetActivity=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity-alias>
<!-- Live Icon Addition -->
<meta-data
android:name="flutterEmbedding"
android:value="2" />
</application>
...
...
Create java/kotlin files with the same name as provided in activity-alias.
In the above AndroidManifest.xml example, 2 activity-alias are provided, so the number of java/kotlin files will be 2. Example:
package com.hackthedeveloper.live_icon_example;
public class DarkTheme {
}
package com.hackthedeveloper.live_icon_example;
public class LightTheme {
}
One thing to note here is that, we have added two extra activity as activity-alias, and we now have 3 activity in total.
List all the activity-alias class names.
NOTE: MainActivity
will also be added here as it containes the launch intent.
LiveIcon.initialize(
classNames: ['MainActivity', 'DarkTheme', 'LightTheme'],
);
Use switchIconTo
to switch app icons. It takes in the className that must match the desired activity-alias android:name
.
await liveIcon.switchIconTo(
className: 'DarkTheme',
);
Contributions are welcomed!
If you feel that a hook is missing, feel free to open a pull-request.
For a custom-hook to be merged, you will need to do the following:
Describe the use-case.
-
Open an issue explaining why we need this hook, how to use it, ... This is important as a hook will not get merged if the hook doens't appeal to a large number of people.
-
If your hook is rejected, don't worry! A rejection doesn't mean that it won't be merged later in the future if more people shows an interest in it. In the mean-time, feel free to publish your hook as a package on https://pub.dev.
-
A hook will not be merged unles fully tested, to avoid breaking it inadvertendly in the future.
Code and documentation Copyright (c) 2021 Devs On Flutter. Code released under the BSD 3-Clause License.