From 300541f9bb325079989a2d74e48817cfb555c41d Mon Sep 17 00:00:00 2001 From: LittleSheep Date: Mon, 1 Sep 2025 01:00:52 +0800 Subject: [PATCH] :recycle: Replaced picker --- lib/screens/chat/room.dart | 27 +++++++++++++++++---------- lib/widgets/post/compose_shared.dart | 27 +++++++++++++++++---------- 2 files changed, 34 insertions(+), 20 deletions(-) diff --git a/lib/screens/chat/room.dart b/lib/screens/chat/room.dart index 62348d2c..edf0389a 100644 --- a/lib/screens/chat/room.dart +++ b/lib/screens/chat/room.dart @@ -4,6 +4,7 @@ import "dart:developer" as developer; import "dart:io"; import "package:dio/dio.dart"; import "package:easy_localization/easy_localization.dart"; +import "package:file_picker/file_picker.dart"; import "package:flutter/foundation.dart"; import "package:flutter/material.dart"; import "package:go_router/go_router.dart"; @@ -1251,26 +1252,32 @@ class ChatRoomScreen extends HookConsumerWidget { }, [id]); Future pickPhotoMedia() async { - final result = await ref - .watch(imagePickerProvider) - .pickMultiImage(requestFullMetadata: true); - if (result.isEmpty) return; + final result = await FilePicker.platform.pickFiles( + type: FileType.image, + allowMultiple: true, + allowCompression: false, + ); + if (result == null || result.count == 0) return; attachments.value = [ ...attachments.value, - ...result.map( + ...result.files.map( (e) => UniversalFile(data: e, type: UniversalFileType.image), ), ]; } Future pickVideoMedia() async { - final result = await ref - .watch(imagePickerProvider) - .pickVideo(source: ImageSource.gallery); - if (result == null) return; + final result = await FilePicker.platform.pickFiles( + type: FileType.video, + allowMultiple: true, + allowCompression: false, + ); + if (result == null || result.count == 0) return; attachments.value = [ ...attachments.value, - UniversalFile(data: result, type: UniversalFileType.video), + ...result.files.map( + (e) => UniversalFile(data: e, type: UniversalFileType.video), + ), ]; } diff --git a/lib/widgets/post/compose_shared.dart b/lib/widgets/post/compose_shared.dart index 483dc1cf..6f241d82 100644 --- a/lib/widgets/post/compose_shared.dart +++ b/lib/widgets/post/compose_shared.dart @@ -1,6 +1,7 @@ import 'package:collection/collection.dart'; import 'package:dio/dio.dart'; import 'package:easy_localization/easy_localization.dart'; +import 'package:file_picker/file_picker.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; @@ -388,26 +389,32 @@ class ComposeLogic { } static Future pickPhotoMedia(WidgetRef ref, ComposeState state) async { - final result = await ref - .watch(imagePickerProvider) - .pickMultiImage(requestFullMetadata: true); - if (result.isEmpty) return; + final result = await FilePicker.platform.pickFiles( + type: FileType.image, + allowMultiple: true, + allowCompression: false, + ); + if (result == null || result.count == 0) return; state.attachments.value = [ ...state.attachments.value, - ...result.map( + ...result.files.map( (e) => UniversalFile(data: e, type: UniversalFileType.image), ), ]; } static Future pickVideoMedia(WidgetRef ref, ComposeState state) async { - final result = await ref - .watch(imagePickerProvider) - .pickVideo(source: ImageSource.gallery); - if (result == null) return; + final result = await FilePicker.platform.pickFiles( + type: FileType.video, + allowMultiple: true, + allowCompression: false, + ); + if (result == null || result.count == 0) return; state.attachments.value = [ ...state.attachments.value, - UniversalFile(data: result, type: UniversalFileType.video), + ...result.files.map( + (e) => UniversalFile(data: e, type: UniversalFileType.video), + ), ]; }