feat: support xdp selector for linux

use xdp selector
This commit is contained in:
ShootingStarDragons 2025-08-12 09:50:43 +09:00
parent 871da6c6a6
commit b020c90ac5
4 changed files with 20 additions and 41 deletions

View file

@ -3,7 +3,6 @@ import 'package:flutter/widgets.dart';
import 'package:file_picker/file_picker.dart';
import 'package:file_selector/file_selector.dart';
import 'package:fluffychat/utils/platform_infos.dart';
import 'package:fluffychat/widgets/app_lock.dart';
import 'package:fluffychat/widgets/future_loading_dialog.dart';
@ -13,31 +12,18 @@ Future<List<XFile>> selectFiles(
FileSelectorType type = FileSelectorType.any,
bool allowMultiple = false,
}) async {
if (!PlatformInfos.isLinux) {
final result = await AppLock.of(context).pauseWhile(
showFutureLoadingDialog(
context: context,
future: () => FilePicker.platform.pickFiles(
compressionQuality: 0,
allowMultiple: allowMultiple,
type: type.filePickerType,
allowedExtensions: type.extensions,
),
final result = await AppLock.of(context).pauseWhile(
showFutureLoadingDialog(
context: context,
future: () => FilePicker.platform.pickFiles(
compressionQuality: 0,
allowMultiple: allowMultiple,
type: type.filePickerType,
allowedExtensions: type.extensions,
),
);
return result.result?.xFiles ?? [];
}
if (allowMultiple) {
return await AppLock.of(context).pauseWhile(
openFiles(confirmButtonText: title, acceptedTypeGroups: type.groups),
);
}
final file = await AppLock.of(context).pauseWhile(
openFile(confirmButtonText: title, acceptedTypeGroups: type.groups),
),
);
if (file == null) return [];
return [file];
return result.result?.xFiles ?? [];
}
enum FileSelectorType {

View file

@ -3,7 +3,6 @@ import 'dart:io';
import 'package:flutter/material.dart';
import 'package:file_picker/file_picker.dart';
import 'package:file_selector/file_selector.dart';
import 'package:matrix/matrix.dart';
import 'package:share_plus/share_plus.dart';
import 'package:universal_html/html.dart' as html;
@ -20,18 +19,12 @@ extension MatrixFileExtension on MatrixFile {
return;
}
final downloadPath = !PlatformInfos.isMobile
? (await getSaveLocation(
suggestedName: name,
confirmButtonText: L10n.of(context).saveFile,
))
?.path
: await FilePicker.platform.saveFile(
dialogTitle: L10n.of(context).saveFile,
fileName: name,
type: filePickerFileType,
bytes: bytes,
);
final downloadPath = await FilePicker.platform.saveFile(
dialogTitle: L10n.of(context).saveFile,
fileName: name,
type: filePickerFileType,
bytes: bytes,
);
if (downloadPath == null) return;
if (PlatformInfos.isDesktop) {

View file

@ -410,10 +410,10 @@ packages:
dependency: "direct main"
description:
name: file_picker
sha256: "8f9f429998f9232d65bc4757af74475ce44fc80f10704ff5dfa8b1d14fc429b9"
sha256: ef7d2a085c1b1d69d17b6842d0734aad90156de08df6bd3c12496d0bd6ddf8e2
url: "https://pub.dev"
source: hosted
version: "10.2.3"
version: "10.3.1"
file_selector:
dependency: "direct main"
description:

View file

@ -24,7 +24,7 @@ dependencies:
dynamic_color: ^1.8.1
emoji_picker_flutter: ^4.3.0
emojis: ^0.9.9
file_picker: ^10.2.3
file_picker: ^10.3.1
file_selector: ^1.0.3
flutter:
sdk: flutter
@ -144,4 +144,4 @@ dependency_overrides:
git:
url: https://github.com/ThexXTURBOXx/flutter_web_auth_2.git
ref: 3.x-without-v1
path: flutter_web_auth_2
path: flutter_web_auth_2