Image 是否有替代图像\u选取器\u保存器依赖关系的方法
我正在编写一个在设备中下载图像的代码,但是androidx与图像\u picker\u saver依赖项不兼容。所以有人能为它推荐一个替代方案吗Image 是否有替代图像\u选取器\u保存器依赖关系的方法,image,flutter,download,Image,Flutter,Download,我正在编写一个在设备中下载图像的代码,但是androidx与图像\u picker\u saver依赖项不兼容。所以有人能为它推荐一个替代方案吗 The complete code- _saveImage(imageNames) async { await PermissionHandler() .checkPermissionStatus(PermissionGroup.storage) .then((status) async { if (status == P
The complete code-
_saveImage(imageNames) async {
await PermissionHandler()
.checkPermissionStatus(PermissionGroup.storage)
.then((status) async {
if (status == PermissionStatus.denied ||
status == PermissionStatus.disabled ||
status == PermissionStatus.unknown) {
await PermissionHandler().requestPermissions(
[PermissionGroup.storage]).then((status1) async {
if (status1.containsValue(PermissionStatus.granted)) {
await get(imageNames).then((res) async {
await ImagePickerSaver.saveFile(fileData: res.bodyBytes)
.then((str) {
File.fromUri(Uri.file(str));
Fluttertoast.showToast(
msg: "Saved to gallery!",
toastLength: Toast.LENGTH_LONG,
gravity: ToastGravity.BOTTOM,
timeInSecForIos: 1,
backgroundColor: Colors.green,
textColor: Colors.white,
fontSize: 15.0);
});
});
}
});
} else if (status == PermissionStatus.granted) {
await get(imageNames).then((res) async {
await ImagePickerSaver.saveFile(fileData: res.bodyBytes).then((str) {
File.fromUri(Uri.file(str));
Fluttertoast.showToast(
msg: "Saved to gallery!",
toastLength: Toast.LENGTH_LONG,
gravity: ToastGravity.CENTER,
timeInSecForIos: 1,
backgroundColor: Colors.green,
textColor: Colors.white,
fontSize: 15.0);
});
});
}
});
}您需要一个用于解码/编码算法的软件包。我建议这个规范化的包: 我们将使用它
import 'dart:io' as io;
import 'package:http/http.dart' as http;
import 'package:image/image.dart';
import 'package:path/path.dart';
import 'package:path_provider/path_provider.dart';
我们需要bodyBytes从网络映像文件写入文件:
Future<dynamic> downloadImage() async =>
await http.get(url).then((response) => response.bodyBytes);
Future downloadImage()异步=>
等待http.get(url).then((response)=>response.bodyBytes);
获取应用程序工作目录:
Future<String> createDir() async =>
await getApplicationDocumentsDirectory().then((dir) => dir.path);
Future createDir()异步=>
等待getApplicationDocumentsDirectory()。然后((dir)=>dir.path);
首先,我们将创建[Image]类型变量,该变量由Image package提供,然后我们将其转换为Image package再次提供的解码和编码文件:
Future<io.File> writeFile(String path, var bodyBytes, String fileName) async {
Image image = decodeImage(bodyBytes);
io.File file = io.File(join(path, fileName));
file.writeAsBytesSync(encodePng(image));
return file;
}
Future writeFile(字符串路径、变量bodyBytes、字符串文件名)异步{
图像图像=解码图像(bodyBytes);
io.File File=io.File(join(路径,文件名));
writeAsBytesSync(encodePng(image));
返回文件;
}
因此,您创建了文件,需要加载它们,这是您需要的方法(您可以通过[Image.file]小部件使用还原的图像):
Future loadFiles()异步{
列表图像=[];
final io.Directory=wait getApplicationDocumentsDirectory();
打印('path:${dir.path}');
对于(dir.listSync()中的io.FileSystemEntity f){
if(f是io.File){
如果(f.path.contains('.jpg')){//您想要的任何格式
增加(f);
}
}
}
返回图像;
}
您需要一个用于解码/编码算法的软件包。我建议这个规范化的包:
我们将使用它
import 'dart:io' as io;
import 'package:http/http.dart' as http;
import 'package:image/image.dart';
import 'package:path/path.dart';
import 'package:path_provider/path_provider.dart';
我们需要bodyBytes从网络映像文件写入文件:
Future<dynamic> downloadImage() async =>
await http.get(url).then((response) => response.bodyBytes);
Future downloadImage()异步=>
等待http.get(url).then((response)=>response.bodyBytes);
获取应用程序工作目录:
Future<String> createDir() async =>
await getApplicationDocumentsDirectory().then((dir) => dir.path);
Future createDir()异步=>
等待getApplicationDocumentsDirectory()。然后((dir)=>dir.path);
首先,我们将创建[Image]类型变量,该变量由Image package提供,然后我们将其转换为Image package再次提供的解码和编码文件:
Future<io.File> writeFile(String path, var bodyBytes, String fileName) async {
Image image = decodeImage(bodyBytes);
io.File file = io.File(join(path, fileName));
file.writeAsBytesSync(encodePng(image));
return file;
}
Future writeFile(字符串路径、变量bodyBytes、字符串文件名)异步{
图像图像=解码图像(bodyBytes);
io.File File=io.File(join(路径,文件名));
writeAsBytesSync(encodePng(image));
返回文件;
}
因此,您创建了文件,需要加载它们,这是您需要的方法(您可以通过[Image.file]小部件使用还原的图像):
Future loadFiles()异步{
列表图像=[];
final io.Directory=wait getApplicationDocumentsDirectory();
打印('path:${dir.path}');
对于(dir.listSync()中的io.FileSystemEntity f){
if(f是io.File){
如果(f.path.contains('.jpg')){//您想要的任何格式
增加(f);
}
}
}
返回图像;
}
简单地说,您要做的是下载图像并将其保存到文件中?是的,下载图像并保存到下载文件夹中。唯一的问题是访问下载文件夹。如果我们能找到一条路,其余的都很容易。如果保存到应用程序目录对您来说是可以的,那么很简单。保存到应用程序目录不会有问题。我稍后将分享完整的代码,现在我有点忙,但要快速回答,请查看这些软件包:-…简单地说,您尝试做的是下载图像并将其保存到文件中?是的,正在下载图像并保存在下载文件夹中。唯一的问题是访问下载文件夹。如果我们能找到一条路,其余的都很容易。如果保存到应用程序目录对您来说合适,那么很容易。保存到应用程序目录不会有问题。我稍后将共享完整的代码,现在我有点忙,但要快速回答,请查看这些包:-。。。