You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

154 lines
4.2 KiB

2 years ago
import 'dart:io';
import 'package:flutter/cupertino.dart';
import 'package:image_picker/image_picker.dart';
// import 'package:image_picker/image_picker.dart';
import 'package:project_telephony/utils/headers.dart';
import 'package:velocity_x/velocity_x.dart';
// import 'package:velocity_x/velocity_x.dart';
class CloudImagePicker {
static Future<List<File>> pickMultiImage(
{required String title,
double maxWidth = 1000,
double maxHeight = 1000}) async {
List<XFile>? files = [];
files = await ImagePicker().pickMultiImage();
if (files == null) {
return <File>[];
} else {
return files.map((e) => File(e.path)).toList();
}
}
static Future<List<File>> pickMultiAndSingleImage(
{required String title,
double maxWidth = 1000,
double maxHeight = 1000}) async {
List<XFile>? files = [];
// _files = await ImagePicker().pickMultiImage();
files = await Get.bottomSheet(CupertinoActionSheet(
title: title.text.isIntrinsic.make(),
actions: [
CupertinoDialogAction(
onPressed: () async {
await ImagePicker().pickMultiImage().then((value) {
if (value != null) {
Get.back(
result: value,
);
}
});
},
child: Row(
children: [
const Icon(CupertinoIcons.photo),
30.wb,
'相册(长按图片多选)'.text.isIntrinsic.make(),
],
),
),
CupertinoDialogAction(
onPressed: () async {
await ImagePicker()
.pickImage(
source: ImageSource.camera,
maxHeight: maxHeight,
maxWidth: maxWidth,
)
.then((value) {
if (value != null) {
XFile pickFile = value;
List<XFile> files = [];
files.add(pickFile);
Get.back(
result: files,
);
}
});
},
child: Row(
children: [
const Icon(CupertinoIcons.camera),
30.wb,
'相机'.text.isIntrinsic.make(),
],
),
),
],
cancelButton: CupertinoDialogAction(
onPressed: Get.back,
child: '取消'.text.isIntrinsic.make(),
),
));
if (files == null) {
return <File>[];
} else {
return files.map((e) => File(e.path)).toList();
}
}
static Future<File?> pickSingleImage(
{required String title,
double maxWidth = 1000,
double maxHeight = 1000}) async {
XFile? xFile = await Get.bottomSheet(CupertinoActionSheet(
title: title.text.isIntrinsic.make(),
actions: [
CupertinoDialogAction(
onPressed: () async {
await ImagePicker()
.pickImage(
source: ImageSource.gallery,
maxHeight: maxHeight,
maxWidth: maxWidth,
)
.then((value) {
Get.back(
result: value,
);
});
},
child: Row(
children: [
const Icon(CupertinoIcons.photo),
30.wb,
'相册'.text.isIntrinsic.make(),
],
)),
CupertinoDialogAction(
onPressed: () async {
await ImagePicker()
.pickImage(
source: ImageSource.camera,
maxHeight: maxHeight,
maxWidth: maxWidth,
)
.then((value) {
Get.back(
result: value,
);
});
},
child: Row(
children: [
const Icon(CupertinoIcons.camera),
30.wb,
'相机'.text.isIntrinsic.make(),
],
)),
],
cancelButton: CupertinoDialogAction(
onPressed: Get.back,
child: '取消'.text.isIntrinsic.make(),
),
));
if (xFile != null) {
return File(xFile.path);
} else {
return null;
}
}
}