72 lines
2.1 KiB
Dart
72 lines
2.1 KiB
Dart
|
|
import 'dart:io';
|
|
import 'package:flutter/foundation.dart';
|
|
import 'package:image_gallery_saver/image_gallery_saver.dart';
|
|
import 'package:wallpaper/utils/local_img_manager.dart';
|
|
import 'package:permission_handler/permission_handler.dart';
|
|
|
|
class DownloadManager {
|
|
static Future<bool> downloadImgWithUrl(String urlStr) async {
|
|
//对于android先去判断存储权限的获取
|
|
// if (!await Permission.storage.request().isGranted) {
|
|
// return false;
|
|
// }
|
|
|
|
// await Permission.photos.request();
|
|
|
|
// Permission.photos.
|
|
|
|
var httpClient = HttpClient();
|
|
try {
|
|
// option: Options(responseType: ResponseType.bytes)
|
|
var reqiest = await httpClient.getUrl(Uri.parse(urlStr));
|
|
var response = await reqiest.close();
|
|
var bytes = await consolidateHttpClientResponseBytes(response);
|
|
var fileName = await LocalImgManager.saveImgDataBytes(bytes);
|
|
// print(fileName);
|
|
//写入数据库信息
|
|
//.....
|
|
|
|
|
|
|
|
return true;
|
|
}
|
|
catch(error) {
|
|
print("the error:${error}");
|
|
return true;
|
|
}
|
|
}
|
|
|
|
|
|
// 保存到相册的UTil
|
|
|
|
// static Future<dynamic> saveLocalImage(String imagePath) async {
|
|
// var image = await ImageUtil.loadImageByFile(imagePath);
|
|
// ByteData? byteData =
|
|
// await (image.toByteData(format: ui.ImageByteFormat.png));
|
|
// if (byteData != null) {
|
|
// final result =
|
|
// await ImageGallerySaver.saveImage(byteData.buffer.asUint8List());
|
|
// print("SaveToAlbumUtil result:${result}");
|
|
// return result;
|
|
// } else {
|
|
// throw StateError("saveLocalImage error imagePath:${imagePath}");
|
|
// }
|
|
// }
|
|
|
|
//从网络保存至相册
|
|
static Future<void> saveNetworkImage(String urlStr) async {
|
|
var httpClient = HttpClient();
|
|
var reqiest = await httpClient.getUrl(Uri.parse(urlStr));
|
|
var response = await reqiest.close();
|
|
var bytes = await consolidateHttpClientResponseBytes(response);
|
|
|
|
final result = await ImageGallerySaver.saveImage(
|
|
Uint8List.fromList(bytes),
|
|
quality: 60,
|
|
name: "hello");
|
|
print(result);
|
|
}
|
|
|
|
|
|
} |