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;
List<EmailContent>? initialEmailContents;
final ScrollController scrollControllerAttachment = ScrollController();
final StreamController<Either<Failure, Success>> _downloadProgressStateController =
StreamController<Either<Failure, Success>>.broadcast();
Stream<Either<Failure, Success>> get downloadProgressState => _downloadProgressStateController.stream;
@@ -135,6 +137,7 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
@override
void onClose() {
_downloadProgressStateController.close();
scrollControllerAttachment.dispose();
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/presentation_email_extension.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/email/presentation/controller/single_email_controller.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(
height: 60,
color: Colors.transparent,
child: ListView.builder(
child: ScrollConfiguration(
behavior: CustomScrollBehavior(),
child: ListView.builder(
key: const Key('list_attachment_minimize_in_email'),
shrinkWrap: true,
physics: const ClampingScrollPhysics(),
scrollDirection: Axis.horizontal,
controller: controller.scrollControllerAttachment,
itemCount: attachments.length,
itemBuilder: (context, index) => AttachmentFileTileBuilder(
itemBuilder: (context, index) =>
AttachmentFileTileBuilder(
attachments[index],
onDownloadAttachmentFileActionClick: (attachment) {
if (BuildUtils.isWeb) {
@@ -423,7 +427,9 @@ class EmailView extends GetWidget<SingleEmailController> {
} else {
controller.exportAttachment(context, attachment);
}
})
}
)
),
)
);
}