live_icon
A flutter plugin to change the app icons and label in real time.
A flutter plugin that allows you to change the app's icons and label in real time.
{"sdk":"flutter"}{"sdk":"flutter"}English project snapshot. Visit GitHub for the latest content.
GitHub GitHub code size in bytes GitHub top language GitHub language count GitHub tag (latest by date) GitHub issues
GitHub Repo stars GitHub forks
✅ 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:
DarkTheme.javapackage com.hackthedeveloper.live_icon_example;
public class DarkTheme {
}
LightTheme.javapackage 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',
);
https://github.com/aritraroy/social-icons/blob/master/twitter-icon.png?raw=true https://github.com/aritraroy/social-icons/blob/master/linkedin-icon.png?raw=true https://github.com/aritraroy/social-icons/blob/master/instagram-icon.png?raw=true
https://github.com/aritraroy/social-icons/blob/master/twitter-icon.png?raw=true https://github.com/aritraroy/social-icons/blob/master/linkedin-icon.png?raw=true https://github.com/aritraroy/social-icons/blob/master/instagram-icon.png?raw=true
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.