@@ -10,12 +10,13 @@ import 'package:flutter_svg/flutter_svg.dart';
1010import 'package:model/upload/file_info.dart' ;
1111import 'package:super_clipboard/super_clipboard.dart' ;
1212import 'package:super_drag_and_drop/super_drag_and_drop.dart' ;
13+ import 'package:tmail_ui_user/features/composer/presentation/mixin/drag_drog_file_mixin.dart' ;
1314import 'package:tmail_ui_user/features/composer/presentation/styles/web/drop_zone_widget_style.dart' ;
1415import 'package:tmail_ui_user/main/localizations/app_localizations.dart' ;
1516
1617typedef OnSuperFileDrop = void Function (List <FileInfo > fileInfos);
1718
18- class LocalFileDropZoneWidget extends StatelessWidget {
19+ class LocalFileDropZoneWidget extends StatelessWidget with DragDropFileMixin {
1920
2021 final ImagePaths imagePaths;
2122 final double ? width;
@@ -44,7 +45,7 @@ class LocalFileDropZoneWidget extends StatelessWidget {
4445 return DropRegion (
4546 formats: allowedFormats,
4647 onDropOver: (_) => DropOperation .copy,
47- onPerformDrop: _onFileDrop,
48+ onPerformDrop: (performDropEvent) => _onFileDrop (context, performDropEvent) ,
4849 hitTestBehavior: HitTestBehavior .opaque,
4950 child: SizedBox (
5051 width: width,
@@ -85,25 +86,30 @@ class LocalFileDropZoneWidget extends StatelessWidget {
8586 );
8687 }
8788
88- Future <void > _onFileDrop (PerformDropEvent performDropEvent) async {
89- final items = performDropEvent.session.items;
90- final listFileInfo = await Future .wait (items.map (
91- (item) async {
92- final dataReaderFile = await item.dataReader? .getFileFuture (
93- SimpleFileFormat (mimeTypes: item.platformFormats)
94- );
95- final bytes = await dataReaderFile? .readAll ();
96- return FileInfo (
97- fileName: dataReaderFile? .fileName ?? await item.dataReader? .getSuggestedName () ?? '' ,
98- fileSize: bytes? .length ?? 0 ,
99- bytes: bytes,
100- isInline: item.platformFormats.firstOrNull? .startsWith (Constant .imageType),
101- type: item.platformFormats.firstOrNull ?? Constant .octetStreamMimeType,
102- );
89+ Future <void > _onFileDrop (BuildContext context, PerformDropEvent performDropEvent) async {
90+ await showFutureLoadingDialogFullScreen (
91+ context: context,
92+ future: () async {
93+ final items = performDropEvent.session.items;
94+ final listFileInfo = await Future .wait (items.map (
95+ (item) async {
96+ final dataReaderFile = await item.dataReader? .getFileFuture (
97+ SimpleFileFormat (mimeTypes: item.platformFormats)
98+ );
99+ final bytes = await dataReaderFile? .readAll ();
100+ return FileInfo (
101+ fileName: dataReaderFile? .fileName ?? await item.dataReader? .getSuggestedName () ?? '' ,
102+ fileSize: bytes? .length ?? 0 ,
103+ bytes: bytes,
104+ isInline: item.platformFormats.firstOrNull? .startsWith (Constant .imageType),
105+ type: item.platformFormats.firstOrNull ?? Constant .octetStreamMimeType,
106+ );
107+ },
108+ ));
109+
110+ onSuperDrop? .call (listFileInfo);
103111 },
104- ));
105-
106- onSuperDrop? .call (listFileInfo);
112+ );
107113 }
108114}
109115
0 commit comments