support setting new download path on android

This commit is contained in:
2024-11-10 17:27:27 +08:00
parent 93193bddc0
commit 6a60194ffb
10 changed files with 167 additions and 7 deletions

View File

@@ -32,12 +32,28 @@ class _AppSettingsState extends State<AppSettings> {
title: "Set New Storage Path".tl,
actionTitle: "Set".tl,
callback: () async {
var result;
String? result;
if (App.isAndroid) {
context.showMessage(message: "Not supported".tl);
return;
}
else if (App.isIOS) {
var channel = const MethodChannel("venera/storage");
var permission = await channel.invokeMethod('');
if(permission != true) {
context.showMessage(message: "Permission denied".tl);
return;
}
var path = await selectDirectory();
if(path != null) {
// check if the path is writable
var testFile = File(FilePath.join(path, "test"));
try {
await testFile.writeAsBytes([1]);
await testFile.delete();
} catch (e) {
context.showMessage(message: "Permission denied".tl);
return;
}
result = path;
}
} else if (App.isIOS) {
result = await selectDirectoryIOS();
} else {
result = await selectDirectory();

View File

@@ -4,6 +4,7 @@ import 'package:flutter/gestures.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_reorderable_grid_view/widgets/reorderable_builder.dart';
import 'package:permission_handler/permission_handler.dart';
import 'package:url_launcher/url_launcher_string.dart';
import 'package:venera/components/components.dart';
import 'package:venera/foundation/app.dart';