TF-1832 Enable drag horizontal scroll attachment in composer

(cherry picked from commit a09ed39d4ebdf311746048658e5db6393bfb5b65)
This commit is contained in:
dab246
2023-05-11 16:17:39 +07:00
committed by Dat Vu
parent a9e5483b03
commit 1625a8ee2f
3 changed files with 30 additions and 16 deletions
@@ -0,0 +1,10 @@
import 'package:flutter/gestures.dart';
import 'package:flutter/material.dart';
class CustomScrollBehavior extends MaterialScrollBehavior {
@override
Set<PointerDeviceKind> get dragDevices => {
PointerDeviceKind.touch,
PointerDeviceKind.mouse,
};
}
@@ -135,6 +135,7 @@ class ComposerController extends BaseController {
final ScrollController scrollController = ScrollController(); final ScrollController scrollController = ScrollController();
final ScrollController scrollControllerEmailAddress = ScrollController(); final ScrollController scrollControllerEmailAddress = ScrollController();
final ScrollController scrollControllerAttachment = ScrollController();
List<Attachment> initialAttachments = <Attachment>[]; List<Attachment> initialAttachments = <Attachment>[];
String? _textEditorWeb; String? _textEditorWeb;
@@ -267,6 +268,7 @@ class ComposerController extends BaseController {
scrollController.dispose(); scrollController.dispose();
scrollControllerEmailAddress.removeListener(_scrollControllerEmailAddressListener); scrollControllerEmailAddress.removeListener(_scrollControllerEmailAddressListener);
scrollControllerEmailAddress.dispose(); scrollControllerEmailAddress.dispose();
scrollControllerAttachment.dispose();
super.dispose(); super.dispose();
} }
@@ -25,6 +25,7 @@ import 'package:model/extensions/list_email_content_extension.dart';
import 'package:model/mailbox/expand_mode.dart'; import 'package:model/mailbox/expand_mode.dart';
import 'package:pointer_interceptor/pointer_interceptor.dart'; import 'package:pointer_interceptor/pointer_interceptor.dart';
import 'package:tmail_ui_user/features/base/mixin/app_loader_mixin.dart'; import 'package:tmail_ui_user/features/base/mixin/app_loader_mixin.dart';
import 'package:tmail_ui_user/features/base/widget/custom_scroll_behavior.dart';
import 'package:tmail_ui_user/features/composer/presentation/composer_controller.dart'; import 'package:tmail_ui_user/features/composer/presentation/composer_controller.dart';
import 'package:tmail_ui_user/features/composer/presentation/mixin/composer_loading_mixin.dart'; import 'package:tmail_ui_user/features/composer/presentation/mixin/composer_loading_mixin.dart';
import 'package:tmail_ui_user/features/composer/presentation/mixin/rich_text_button_mixin.dart'; import 'package:tmail_ui_user/features/composer/presentation/mixin/rich_text_button_mixin.dart';
@@ -853,7 +854,6 @@ class ComposerView extends GetWidget<ComposerController>
controller.expandModeAttachments.value)), controller.expandModeAttachments.value)),
Padding( Padding(
padding: EdgeInsets.only( padding: EdgeInsets.only(
bottom: 8,
left: responsiveUtils.isMobile(context) ? 16 : 10, left: responsiveUtils.isMobile(context) ? 16 : 10,
right: responsiveUtils.isMobile(context) ? 16 : 10), right: responsiveUtils.isMobile(context) ? 16 : 10),
child: _buildAttachmentsList( child: _buildAttachmentsList(
@@ -905,21 +905,23 @@ class ComposerView extends GetWidget<ComposerController>
alignment: Alignment.centerLeft, alignment: Alignment.centerLeft,
child: SizedBox( child: SizedBox(
height: 60, height: 60,
child: ListView.builder( child: ScrollConfiguration(
key: const Key('list_attachment_minimize'), behavior: CustomScrollBehavior(),
shrinkWrap: true, child: ListView.builder(
physics: const ClampingScrollPhysics(), key: const Key('list_attachment_minimize'),
scrollDirection: Axis.horizontal, shrinkWrap: true,
itemCount: uploadFilesState.length, scrollDirection: Axis.horizontal,
itemBuilder: (context, index) => AttachmentFileComposerBuilder( controller: controller.scrollControllerAttachment,
uploadFilesState[index], itemCount: uploadFilesState.length,
itemMargin: EdgeInsets.only( itemBuilder: (context, index) => AttachmentFileComposerBuilder(
right: AppUtils.isDirectionRTL(context) ? 0 : 8, uploadFilesState[index],
left: AppUtils.isDirectionRTL(context) ? 8 : 0 itemMargin: EdgeInsets.only(
), right: AppUtils.isDirectionRTL(context) ? 0 : 8,
maxWidth: _getMaxWidthItemListAttachment(context, constraints), left: AppUtils.isDirectionRTL(context) ? 8 : 0
onDeleteAttachmentAction: (attachment) => ),
controller.deleteAttachmentUploaded(attachment.uploadTaskId)) maxWidth: _getMaxWidthItemListAttachment(context, constraints),
onDeleteAttachmentAction: (attachment) => controller.deleteAttachmentUploaded(attachment.uploadTaskId))
),
) )
) )
); );