wallpaper_manager
A Flutter plugin for changing the Home Screen, Lock Screen (or both) Wallpaper(s) on Android devices.
Usage
Installation
In the pubspec.yaml
of your flutter project, add the following dependency:dependencies: … wallpaper_manager: “^1.0.10”
In your library add the following import:import ‘package:wallpaper_manager/wallpaper_manager.dart’;
Example
Basic Usage
Since this is not a Widget, you have to create WallpaperManager constructors from inside an async function, which is a Future that returns a String output specifying success/failure.String path = “/path/to/file/on/disk”; int location = WallpaperManager.HOME_SCREEN; // or location = WallpaperManager.LOCK_SCREEN; final String result = await WallpaperManager.setWallpaperFromFile(path, location);
Basic Usage with error handling
You might want to wrap it in a try/catch since platform messages (plug-ins like these) may failString path = “/path/to/file/on/disk”; int location = WallpaperManager.HOME_SCREEN; // or location = WallpaperManager.LOCK_SCREEN; String result; try { result = await WallpaperManager.setWallpaperFromFile(path, location); } on PlatformException { result = ‘Failed to get wallpaper.’; }
Loading from a URL (with CacheManager, the image is saved to app files as well)
If you’re loading a Wallpaper from a URL, you should save it to the disk first, then use the path of the saved image file. Add flutter_cache_manager or any other dependency you’d like:dependencies: … flutter_cache_manager: “^1.1.3”
And in dart codeString url = “”; int location = WallpaperManager.HOME_SCREEN; // or location = WallpaperManager.LOCK_SCREEN; String result; var file = await DefaultCacheManager().getSingleFile(url); final String result = await WallpaperManager.setWallpaperFromFile(file.path, location);
Loading from a Flutter asset
If you’re loading a Wallpaper from an asset, you need to make sure it is indexed in the pubspec.yaml file firstdependencies: … flutter: … assets: – assets/tmp1.jpeg
And in dart codeString assetPath = “assets/tmp1.jpg”; int location = WallpaperManager.HOME_SCREEN; // or location = WallpaperManager.LOCK_SCREEN; String result; final String result = await WallpaperManager.setWallpaperFromAsset(assetPath, location);
Getting started
With Wallpaper Manager
See the example
directory for a complete sample app using Wallpaper Manager.
With Flutter
For help getting started with Flutter, view the online documentation.
Notes
- iOS does not support changing Wallpapers from third-party apps (Source)
- Xiaomi/MIUI does not support changing Lock Screen Wallpapers directly from the Android API (Source). You might want to look at creating a Lock Screen Launcher app instead.
Known Issues
- Due to a change in Flutter’s Embedding Engine, you might face an issue while building your project. To work around this, you can upgrade to the latest version of the plugin (which directly handles both v1 & v2 Embedding from v.1.0.6) or change the Flutter Embedding Engine version in your project.
Todos
- Write tests
- Add rect values for optionally cropping the image
- Add variable for re-using Wallpaper from phone’s settings
- Write more tests
Changelog
Please see the Changelog page to know what’s recently changed.
Contributions
Feel free to contribute to this project.
If you find a bug or want a feature, but don’t know how to fix/implement it, please fill an issue.
If you fixed a bug or implemented a feature, please send a pull request.
GITHUB REPOSITORY
https://github.com/AdityaMulgundkar/wallpaper_manager
- All rights reserved to the respective owners/authors