You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
62 lines
1.8 KiB
Dart
62 lines
1.8 KiB
Dart
import 'dart:convert';
|
|
import 'dart:io';
|
|
import 'dart:typed_data';
|
|
|
|
import 'package:open_filex/open_filex.dart';
|
|
import 'package:path_provider/path_provider.dart';
|
|
import 'package:http/http.dart' as http;
|
|
|
|
class FileProcess {
|
|
static bool isFolderCreated = false;
|
|
static Directory? directory;
|
|
|
|
static Future checkDocumentFolder() async {
|
|
try {
|
|
if (!isFolderCreated) {
|
|
directory = await getApplicationDocumentsDirectory();
|
|
await directory!.exists().then((value) {
|
|
if (value) directory!.create();
|
|
isFolderCreated = true;
|
|
});
|
|
}
|
|
} catch (e) {
|
|
print(e.toString());
|
|
}
|
|
}
|
|
|
|
static void openFile(String fileName, {bool isFullPath = false}) {
|
|
String dir = directory!.path + "/$fileName.pdf";
|
|
OpenFilex.open(isFullPath ? fileName : dir);
|
|
}
|
|
|
|
static Future<File> downloadFile(String base64Content, String fileName) async {
|
|
Uint8List bytes = base64.decode(base64Content);
|
|
await checkDocumentFolder();
|
|
String dir = directory!.path + "/" + fileName + ".pdf";
|
|
File file = File(dir);
|
|
if (!file.existsSync()) file.create();
|
|
await file.writeAsBytes(bytes);
|
|
return file;
|
|
}
|
|
|
|
static Future<String> downloadFileFromUrl(String url,String fileName) async {
|
|
await checkDocumentFolder();
|
|
String filePath = '${directory!.path}/$fileName';
|
|
|
|
if (await File(filePath).exists()) {
|
|
await Future.delayed(const Duration(seconds: 1));
|
|
return filePath;
|
|
} else {
|
|
var response = await http.get(Uri.parse(url));
|
|
if (response.statusCode == 200) {
|
|
var bytes = response.bodyBytes;
|
|
File file = File(filePath);
|
|
await file.writeAsBytes(bytes);
|
|
return filePath;
|
|
} else {
|
|
throw Exception('Failed to download file');
|
|
}
|
|
}
|
|
}
|
|
}
|