TF-1832 Enable drag horizontal scroll attachment in email view

(cherry picked from commit 1b8a0e9adeb86add0adf56ab8bf8efa60ce3d9ef)
This commit is contained in:
dab246
2023-05-11 16:17:48 +07:00
committed by Dat Vu
parent 1625a8ee2f
commit 8bbc770881
2 changed files with 13 additions and 4 deletions
@@ -103,6 +103,8 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
Identity? _identitySelected; Identity? _identitySelected;
List<EmailContent>? initialEmailContents; List<EmailContent>? initialEmailContents;
final ScrollController scrollControllerAttachment = ScrollController();
final StreamController<Either<Failure, Success>> _downloadProgressStateController = final StreamController<Either<Failure, Success>> _downloadProgressStateController =
StreamController<Either<Failure, Success>>.broadcast(); StreamController<Either<Failure, Success>>.broadcast();
Stream<Either<Failure, Success>> get downloadProgressState => _downloadProgressStateController.stream; Stream<Either<Failure, Success>> get downloadProgressState => _downloadProgressStateController.stream;
@@ -135,6 +137,7 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
@override @override
void onClose() { void onClose() {
_downloadProgressStateController.close(); _downloadProgressStateController.close();
scrollControllerAttachment.dispose();
super.onClose(); super.onClose();
} }
@@ -21,6 +21,7 @@ import 'package:model/extensions/list_attachment_extension.dart';
import 'package:model/extensions/list_email_content_extension.dart'; import 'package:model/extensions/list_email_content_extension.dart';
import 'package:model/extensions/presentation_email_extension.dart'; import 'package:model/extensions/presentation_email_extension.dart';
import 'package:model/mailbox/presentation_mailbox.dart'; import 'package:model/mailbox/presentation_mailbox.dart';
import 'package:tmail_ui_user/features/base/widget/custom_scroll_behavior.dart';
import 'package:tmail_ui_user/features/base/widget/popup_item_widget.dart'; import 'package:tmail_ui_user/features/base/widget/popup_item_widget.dart';
import 'package:tmail_ui_user/features/email/presentation/controller/single_email_controller.dart'; import 'package:tmail_ui_user/features/email/presentation/controller/single_email_controller.dart';
import 'package:tmail_ui_user/features/email/presentation/widgets/app_bar_mail_widget_builder.dart'; import 'package:tmail_ui_user/features/email/presentation/widgets/app_bar_mail_widget_builder.dart';
@@ -409,13 +410,16 @@ class EmailView extends GetWidget<SingleEmailController> {
return Container( return Container(
height: 60, height: 60,
color: Colors.transparent, color: Colors.transparent,
child: ListView.builder( child: ScrollConfiguration(
behavior: CustomScrollBehavior(),
child: ListView.builder(
key: const Key('list_attachment_minimize_in_email'), key: const Key('list_attachment_minimize_in_email'),
shrinkWrap: true, shrinkWrap: true,
physics: const ClampingScrollPhysics(),
scrollDirection: Axis.horizontal, scrollDirection: Axis.horizontal,
controller: controller.scrollControllerAttachment,
itemCount: attachments.length, itemCount: attachments.length,
itemBuilder: (context, index) => AttachmentFileTileBuilder( itemBuilder: (context, index) =>
AttachmentFileTileBuilder(
attachments[index], attachments[index],
onDownloadAttachmentFileActionClick: (attachment) { onDownloadAttachmentFileActionClick: (attachment) {
if (BuildUtils.isWeb) { if (BuildUtils.isWeb) {
@@ -423,7 +427,9 @@ class EmailView extends GetWidget<SingleEmailController> {
} else { } else {
controller.exportAttachment(context, attachment); controller.exportAttachment(context, attachment);
} }
}) }
)
),
) )
); );
} }