在 flutter 中从资产图像设置壁纸

问题描述 投票:0回答:2

我正在创建一个具有壁纸功能的 flutter 应用程序。为了实现这一目标,我使用了 flutter_wallpaper_manager 包和 flutter_cache_manager。但缓存管理器不直接使用资源

assets/images/image.jpg
。或者我错过了什么?

onTap: () async {
  int location = WallpaperManager.HOME_SCREEN;
  var path = await DefaultCacheManager()
      .getSingleFile(widget.img.toString());
  bool result = await WallpaperManager
      .setWallpaperFromFile(
          path.path, location);
},

缓存管理器从 URL 获取,而不是资产。如何使壁纸功能发挥作用?

flutter image dart
2个回答
0
投票

我花了很长时间才找到解决方案,最后我选择了这个选项。

enter code here
Future<void> setWallpaper() async {
    try {
      final byteData = await rootBundle.load('assets/5.jpg');
      final file = File('${(await getTemporaryDirectory()).path}/5.jpg');
      await file.writeAsBytes(byteData.buffer.asUint8List(byteData.offsetInBytes, byteData.lengthInBytes));

      int location = WallpaperManager
          .BOTH_SCREEN; // or location = WallpaperManager.LOCK_SCREEN;

      final bool result =
      await WallpaperManager.setWallpaperFromFile(file.path, location);
      print(result);
    } on PlatformException {}
  }

0
投票

您可以使用 wallpaper_handler 直接从 Flutter 应用程序中的资源设置壁纸。方法

WallpaperHandler.instance.setWallpaperFromAsset
可以让你轻松设置壁纸。

此外,您可以指定:

  • 位置:选择为主屏幕锁定屏幕或两者设置壁纸。
  • 裁剪边界:定义壁纸的自定义裁剪边界,以确保其完美适合您所需的显示。

详细示例和实现步骤请参阅包文档。

© www.soinside.com 2019 - 2024. All rights reserved.