ente/lib/utils/share_util.dart

60 lines
1.9 KiB
Dart
Raw Normal View History

2020-04-24 12:40:24 +00:00
import 'package:esys_flutter_share/esys_flutter_share.dart';
import 'package:flutter/widgets.dart';
2020-06-19 23:03:26 +00:00
import 'package:photos/models/file.dart';
2020-04-24 12:40:24 +00:00
import 'package:path/path.dart';
import 'package:photos/models/file_type.dart';
import 'package:photos/utils/dialog_util.dart';
import 'package:photos/utils/file_util.dart';
import 'package:progress_dialog/progress_dialog.dart';
import 'package:share_extend/share_extend.dart';
2020-04-24 12:40:24 +00:00
Future<void> share(BuildContext context, File file) async {
final dialog = createProgressDialog(context, "Preparing...");
if (file.fileType == FileType.image) {
return _shareImage(dialog, file);
} else {
return _shareVideo(dialog, file);
}
}
Future<void> shareMultiple(BuildContext context, List<File> files) async {
if (files.length == 1) {
return share(context, files[0]);
}
final dialog = createProgressDialog(context, "Preparing...");
await dialog.show();
final pathList = List<String>();
for (File file in files) {
pathList.add((await getNativeFile(file)).path);
}
await dialog.hide();
return ShareExtend.shareMultiple(pathList, "image");
}
Future<void> _shareVideo(ProgressDialog dialog, File file) async {
await dialog.show();
final path = (await getNativeFile(file)).path;
await dialog.hide();
return ShareExtend.share(path, "image");
}
Future<void> _shareImage(ProgressDialog dialog, File file) async {
await dialog.show();
final bytes = await getBytes(file);
2020-06-19 23:03:26 +00:00
final filename = _getFilename(file.title);
final ext = extension(file.title);
final shareExt = file.title.endsWith(".HEIC")
2020-05-30 21:26:26 +00:00
? "jpg"
: ext.substring(1, ext.length).toLowerCase();
await dialog.hide();
2020-05-30 21:26:26 +00:00
return Share.file(filename, filename, bytes, "image/" + shareExt);
2020-04-24 12:40:24 +00:00
}
2020-05-30 21:26:26 +00:00
String _getFilename(String name) {
if (name.endsWith(".HEIC")) {
return name.substring(0, name.lastIndexOf(".HEIC")) + ".JPG";
2020-05-25 15:07:22 +00:00
} else {
2020-05-30 21:26:26 +00:00
return name;
2020-05-25 15:07:22 +00:00
}
}