TF-1832 Enable drag horizontal scroll attachment in composer
(cherry picked from commit a09ed39d4ebdf311746048658e5db6393bfb5b65)
This commit is contained in:
@@ -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))
|
||||||
|
),
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|||||||
Reference in New Issue
Block a user