mirror of
https://github.com/revanced/revanced-manager.git
synced 2025-06-12 12:47:37 +02:00
fix: Revert commit b26760b2
to fix file and folder selection
This commit is contained in:
@ -1,11 +1,8 @@
|
||||
import 'package:file_picker/file_picker.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:permission_handler/permission_handler.dart';
|
||||
import 'package:revanced_manager/app/app.locator.dart';
|
||||
import 'package:flutter_file_dialog/flutter_file_dialog.dart';
|
||||
import 'package:revanced_manager/gen/strings.g.dart';
|
||||
import 'package:revanced_manager/models/patch.dart';
|
||||
import 'package:revanced_manager/services/manager_api.dart';
|
||||
import 'package:revanced_manager/ui/views/patch_options/patch_options_viewmodel.dart';
|
||||
import 'package:revanced_manager/ui/widgets/shared/custom_card.dart';
|
||||
|
||||
@ -401,7 +398,6 @@ class TextFieldForPatchOption extends StatefulWidget {
|
||||
}
|
||||
|
||||
class _TextFieldForPatchOptionState extends State<TextFieldForPatchOption> {
|
||||
final ManagerAPI _managerAPI = locator<ManagerAPI>();
|
||||
final TextEditingController controller = TextEditingController();
|
||||
String? selectedKey;
|
||||
String? defaultValue;
|
||||
@ -528,49 +524,29 @@ class _TextFieldForPatchOptionState extends State<TextFieldForPatchOption> {
|
||||
];
|
||||
},
|
||||
onSelected: (String selection) async {
|
||||
// manageExternalStorage permission is required for file/folder selection
|
||||
// otherwise, the app will not complain, but the patches will error out
|
||||
// the same way as if the user selected an empty file/folder.
|
||||
// Android 11 and above requires the manageExternalStorage permission
|
||||
final Map<String, dynamic> availableActions = {
|
||||
t.patchOptionsView.selectFilePath: () async {
|
||||
if (_managerAPI.isScopedStorageAvailable) {
|
||||
final permission =
|
||||
await Permission.manageExternalStorage.request();
|
||||
if (!permission.isGranted) {
|
||||
return;
|
||||
}
|
||||
switch (selection) {
|
||||
case 'file':
|
||||
final String? result = await FlutterFileDialog.pickFile();
|
||||
if (result != null) {
|
||||
controller.text = result;
|
||||
widget.onChanged(controller.text);
|
||||
}
|
||||
final FilePickerResult? result =
|
||||
await FilePicker.platform.pickFiles();
|
||||
if (result == null) {
|
||||
return;
|
||||
break;
|
||||
case 'folder':
|
||||
final DirectoryLocation? result =
|
||||
await FlutterFileDialog.pickDirectory();
|
||||
if (result != null) {
|
||||
controller.text = result.toString();
|
||||
widget.onChanged(controller.text);
|
||||
}
|
||||
controller.text = result.files.single.path!;
|
||||
widget.onChanged(controller.text);
|
||||
},
|
||||
t.patchOptionsView.selectFolder: () async {
|
||||
if (_managerAPI.isScopedStorageAvailable) {
|
||||
final permission =
|
||||
await Permission.manageExternalStorage.request();
|
||||
if (!permission.isGranted) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
final String? result =
|
||||
await FilePicker.platform.getDirectoryPath();
|
||||
if (result == null) {
|
||||
return;
|
||||
}
|
||||
controller.text = result;
|
||||
widget.onChanged(controller.text);
|
||||
},
|
||||
t.remove: () {
|
||||
break;
|
||||
case 'remove':
|
||||
widget.removeValue!();
|
||||
},
|
||||
};
|
||||
if (availableActions.containsKey(selection)) {
|
||||
await availableActions[selection]!();
|
||||
break;
|
||||
case 'null':
|
||||
controller.text = '';
|
||||
widget.onChanged(null);
|
||||
break;
|
||||
}
|
||||
},
|
||||
),
|
||||
|
Reference in New Issue
Block a user