develop-fileDownload #92

Merged
MineTec merged 3 commits from develop-fileDownload into develop 2026-01-31 22:15:50 +00:00
3 changed files with 37 additions and 0 deletions
Showing only changes of commit df275c0108 - Show all commits

23
lib/utils/FileSaver.dart Normal file
View File

@@ -0,0 +1,23 @@
import 'dart:io';
import 'package:permission_handler/permission_handler.dart';
// only tested on android!
class FileSaver {
static Future<String> getExternalDocumentPath() async {
var permission = await Permission.storage.status;
if(!permission.isGranted) {
await Permission.storage.request();
}
var directory = Directory('/storage/emulated/0/Download');
final externalPath = directory.path;
await Directory(externalPath).create(recursive: true);
return externalPath;
}
static Future<File> writeBytes(List<int> bytes, String name) async {
final path = await getExternalDocumentPath();
var file = File('$path/$name');
return file.writeAsBytes(bytes);
}
}

View File

@@ -9,6 +9,8 @@ import 'package:share_plus/share_plus.dart';
import 'package:syncfusion_flutter_pdfviewer/pdfviewer.dart'; import 'package:syncfusion_flutter_pdfviewer/pdfviewer.dart';
import '../storage/base/settingsProvider.dart'; import '../storage/base/settingsProvider.dart';
import '../utils/FileSaver.dart';
import 'infoDialog.dart';
import 'placeholderView.dart'; import 'placeholderView.dart';
import 'sharePositionOrigin.dart'; import 'sharePositionOrigin.dart';
@@ -53,6 +55,17 @@ class _FileViewerState extends State<FileViewer> {
}, },
icon: const Icon(Icons.share_outlined), icon: const Icon(Icons.share_outlined),
), ),
Visibility(
visible: Platform.isAndroid,
child: IconButton(
onPressed: () async {
await FileSaver.writeBytes(await File(widget.path).readAsBytes(), widget.path.split('/').last);
if(!context.mounted) return;
InfoDialog.show(context, 'Die Datei wurde im Downloads Ordner gespeichert.');
},
icon: const Icon(Icons.save_alt_outlined)
)
),
...actions ...actions
], ],
); );

View File

@@ -102,6 +102,7 @@ dependencies:
uuid: ^4.5.1 uuid: ^4.5.1
open_filex: ^4.7.0 open_filex: ^4.7.0
collection: ^1.19.0 collection: ^1.19.0
permission_handler: ^12.0.1
dev_dependencies: dev_dependencies:
flutter_test: flutter_test: