TF-1933 Fix text overflow with ellipsis is weird and ugly by design

(cherry picked from commit a4dd353672eca725abd66bee94347dc339b1102f)
This commit is contained in:
dab246
2023-06-27 21:48:18 +07:00
committed by Dat Vu
parent bc8a03cbce
commit 04a8274b49
13 changed files with 115 additions and 134 deletions
+1
View File
@@ -49,6 +49,7 @@ export 'presentation/views/text/text_field_builder.dart';
export 'presentation/views/text/text_form_field_builder.dart'; export 'presentation/views/text/text_form_field_builder.dart';
export 'presentation/views/text/input_decoration_builder.dart'; export 'presentation/views/text/input_decoration_builder.dart';
export 'presentation/views/text/rich_text_builder.dart'; export 'presentation/views/text/rich_text_builder.dart';
export 'presentation/views/text/text_overflow_builder.dart';
export 'presentation/views/responsive/responsive_widget.dart'; export 'presentation/views/responsive/responsive_widget.dart';
export 'presentation/views/list/tree_view.dart'; export 'presentation/views/list/tree_view.dart';
export 'presentation/views/button/button_builder.dart'; export 'presentation/views/button/button_builder.dart';
@@ -40,8 +40,9 @@ extension StringExtension on String {
} }
} }
String get withUnicodeCharacter { String get overflow {
return characters return characters
.replaceAll(Characters(''), Characters('\u{200B}'))
.replaceAll(Characters('-'), Characters('\u{2011}')) .replaceAll(Characters('-'), Characters('\u{2011}'))
.toString(); .toString();
} }
@@ -0,0 +1,38 @@
import 'package:core/presentation/extensions/string_extension.dart';
import 'package:core/presentation/utils/style_utils.dart';
import 'package:flutter/material.dart';
class TextOverflowBuilder extends StatelessWidget {
final String data;
final TextStyle? style;
final TextAlign? textAlign;
final bool? softWrap;
final int? maxLines;
final TextDirection? textDirection;
final TextOverflow? overflow;
const TextOverflowBuilder(this.data, {
super.key,
this.style,
this.textAlign,
this.softWrap = CommonTextStyle.defaultSoftWrap,
this.maxLines = 1,
this.textDirection,
this.overflow = CommonTextStyle.defaultTextOverFlow,
});
@override
Widget build(BuildContext context) {
return Text(
data.overflow,
style: style,
textAlign: textAlign,
softWrap: softWrap,
maxLines: maxLines,
textDirection: textDirection,
overflow: overflow,
);
}
}
@@ -1,6 +1,5 @@
import 'package:core/presentation/extensions/capitalize_extension.dart'; import 'package:core/presentation/extensions/capitalize_extension.dart';
import 'package:core/presentation/extensions/color_extension.dart'; import 'package:core/presentation/extensions/color_extension.dart';
import 'package:core/presentation/extensions/string_extension.dart';
import 'package:core/presentation/resources/image_paths.dart'; import 'package:core/presentation/resources/image_paths.dart';
import 'package:core/presentation/utils/app_toast.dart'; import 'package:core/presentation/utils/app_toast.dart';
import 'package:core/presentation/utils/responsive_utils.dart'; import 'package:core/presentation/utils/responsive_utils.dart';
@@ -8,6 +7,7 @@ import 'package:core/presentation/utils/style_utils.dart';
import 'package:core/presentation/views/button/icon_button_web.dart'; import 'package:core/presentation/views/button/icon_button_web.dart';
import 'package:core/presentation/views/list/sliver_grid_delegate_fixed_height.dart'; import 'package:core/presentation/views/list/sliver_grid_delegate_fixed_height.dart';
import 'package:core/presentation/views/text/text_field_builder.dart'; import 'package:core/presentation/views/text/text_field_builder.dart';
import 'package:core/presentation/views/text/text_overflow_builder.dart';
import 'package:core/utils/direction_utils.dart'; import 'package:core/utils/direction_utils.dart';
import 'package:core/utils/platform_info.dart'; import 'package:core/utils/platform_info.dart';
import 'package:dropdown_button2/dropdown_button2.dart'; import 'package:dropdown_button2/dropdown_button2.dart';
@@ -85,13 +85,10 @@ abstract class BaseComposerView extends GetWidget<ComposerController>
) )
), ),
), ),
Expanded(child: Text( Expanded(child: TextOverflowBuilder(
controller.identitySelected.value != null controller.identitySelected.value != null
? (controller.identitySelected.value?.email ?? '').withUnicodeCharacter ? (controller.identitySelected.value?.email ?? '')
: (controller.userProfile?.email ?? '').withUnicodeCharacter, : (controller.userProfile?.email ?? ''),
maxLines: 1,
overflow: CommonTextStyle.defaultTextOverFlow,
softWrap: CommonTextStyle.defaultSoftWrap,
style: const TextStyle( style: const TextStyle(
fontSize: 17, fontSize: 17,
fontWeight: FontWeight.normal, fontWeight: FontWeight.normal,
@@ -1,9 +1,9 @@
import 'package:core/presentation/extensions/color_extension.dart'; import 'package:core/presentation/extensions/color_extension.dart';
import 'package:core/presentation/extensions/string_extension.dart';
import 'package:core/presentation/resources/image_paths.dart'; import 'package:core/presentation/resources/image_paths.dart';
import 'package:core/presentation/utils/responsive_utils.dart'; import 'package:core/presentation/utils/responsive_utils.dart';
import 'package:core/presentation/utils/style_utils.dart'; import 'package:core/presentation/utils/style_utils.dart';
import 'package:core/presentation/views/button/icon_button_web.dart'; import 'package:core/presentation/views/button/icon_button_web.dart';
import 'package:core/presentation/views/text/text_overflow_builder.dart';
import 'package:core/utils/direction_utils.dart'; import 'package:core/utils/direction_utils.dart';
import 'package:core/utils/platform_info.dart'; import 'package:core/utils/platform_info.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
@@ -293,15 +293,12 @@ class MailBoxFolderTileBuilder {
crossAxisAlignment: CrossAxisAlignment.end, crossAxisAlignment: CrossAxisAlignment.end,
children: [ children: [
Expanded( Expanded(
child: Text( child: TextOverflowBuilder(
(_mailboxNode.item.name?.name ?? '').withUnicodeCharacter, (_mailboxNode.item.name?.name ?? ''),
maxLines: 1,
softWrap: CommonTextStyle.defaultSoftWrap,
overflow: CommonTextStyle.defaultTextOverFlow,
style: TextStyle( style: TextStyle(
fontSize: _mailboxNode.item.isTeamMailboxes ? 16 : 15, fontSize: _mailboxNode.item.isTeamMailboxes ? 16 : 15,
color: _mailboxNode.item.isTeamMailboxes ? Colors.black : AppColor.colorNameEmail, color: _mailboxNode.item.isTeamMailboxes ? Colors.black : AppColor.colorNameEmail,
fontWeight: _mailboxNode.item.isTeamMailboxes ? FontWeight.bold : FontWeight.normal), fontWeight: _mailboxNode.item.isTeamMailboxes ? FontWeight.bold : FontWeight.normal),
), ),
), ),
if (showTrailingItem) if (showTrailingItem)
@@ -309,15 +306,12 @@ class MailBoxFolderTileBuilder {
], ],
), ),
if(_mailboxNode.item.isTeamMailboxes) if(_mailboxNode.item.isTeamMailboxes)
Text( TextOverflowBuilder(
(_mailboxNode.item.emailTeamMailBoxes ?? '').withUnicodeCharacter, (_mailboxNode.item.emailTeamMailBoxes ?? ''),
maxLines: 1,
softWrap: CommonTextStyle.defaultSoftWrap,
overflow: CommonTextStyle.defaultTextOverFlow,
style: const TextStyle( style: const TextStyle(
fontSize: 13, fontSize: 13,
color: AppColor.colorEmailAddressFull, color: AppColor.colorEmailAddressFull,
fontWeight: FontWeight.w400), fontWeight: FontWeight.w400),
) )
], ],
); );
@@ -1,14 +1,13 @@
import 'package:core/presentation/extensions/color_extension.dart'; import 'package:core/presentation/extensions/color_extension.dart';
import 'package:core/presentation/resources/image_paths.dart'; import 'package:core/presentation/resources/image_paths.dart';
import 'package:core/presentation/utils/responsive_utils.dart'; import 'package:core/presentation/utils/responsive_utils.dart';
import 'package:core/presentation/utils/style_utils.dart'; import 'package:core/presentation/views/text/text_overflow_builder.dart';
import 'package:core/utils/platform_info.dart'; import 'package:core/utils/platform_info.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart'; import 'package:flutter_svg/flutter_svg.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:tmail_ui_user/features/sending_queue/domain/model/sending_email.dart'; import 'package:tmail_ui_user/features/sending_queue/domain/model/sending_email.dart';
import 'package:tmail_ui_user/main/localizations/app_localizations.dart'; import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
import 'package:tmail_ui_user/main/utils/app_utils.dart';
class SendingQueueMailboxWidget extends StatelessWidget { class SendingQueueMailboxWidget extends StatelessWidget {
@@ -59,11 +58,8 @@ class SendingQueueMailboxWidget extends StatelessWidget {
crossAxisAlignment: CrossAxisAlignment.end, crossAxisAlignment: CrossAxisAlignment.end,
children: [ children: [
Expanded( Expanded(
child: Text( child: TextOverflowBuilder(
AppLocalizations.of(context).sendingQueue, AppLocalizations.of(context).sendingQueue,
maxLines: 1,
softWrap: CommonTextStyle.defaultSoftWrap,
overflow: CommonTextStyle.defaultTextOverFlow,
style: const TextStyle( style: const TextStyle(
fontSize: 15, fontSize: 15,
color: AppColor.colorNameEmail, color: AppColor.colorNameEmail,
@@ -71,14 +67,9 @@ class SendingQueueMailboxWidget extends StatelessWidget {
), ),
), ),
Padding( Padding(
padding: EdgeInsets.only( padding: const EdgeInsetsDirectional.only(start: 12),
right: AppUtils.isDirectionRTL(context) ? 0 : 12, child: TextOverflowBuilder(
left: AppUtils.isDirectionRTL(context) ? 12 : 0,
),
child: Text(
_getCountSendingEmails(), _getCountSendingEmails(),
maxLines: 1,
overflow: CommonTextStyle.defaultTextOverFlow,
style: const TextStyle( style: const TextStyle(
fontSize: 13, fontSize: 13,
color: Colors.black, color: Colors.black,
@@ -1,9 +1,8 @@
import 'package:core/presentation/extensions/color_extension.dart'; import 'package:core/presentation/extensions/color_extension.dart';
import 'package:core/presentation/extensions/string_extension.dart';
import 'package:core/presentation/resources/image_paths.dart'; import 'package:core/presentation/resources/image_paths.dart';
import 'package:core/presentation/utils/style_utils.dart';
import 'package:core/presentation/views/image/avatar_builder.dart'; import 'package:core/presentation/views/image/avatar_builder.dart';
import 'package:core/presentation/views/text/text_overflow_builder.dart';
import 'package:core/utils/direction_utils.dart'; import 'package:core/utils/direction_utils.dart';
import 'package:core/utils/platform_info.dart'; import 'package:core/utils/platform_info.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
@@ -52,11 +51,8 @@ class UserInformationWidgetBuilder extends StatelessWidget {
Expanded(child: Column( Expanded(child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Text( TextOverflowBuilder(
_userProfile != null ? '${_userProfile?.email}'.withUnicodeCharacter : '', _userProfile != null ? '${_userProfile?.email}' : '',
maxLines: 1,
overflow: CommonTextStyle.defaultTextOverFlow,
softWrap: CommonTextStyle.defaultSoftWrap,
style: const TextStyle( style: const TextStyle(
fontSize: 17, fontSize: 17,
color: AppColor.colorNameEmail, color: AppColor.colorNameEmail,
@@ -65,12 +61,15 @@ class UserInformationWidgetBuilder extends StatelessWidget {
), ),
const SizedBox(height: 10), const SizedBox(height: 10),
if (subtitle != null) if (subtitle != null)
MaterialTextButton( Transform(
label: AppLocalizations.of(context).manage_account, transform: Matrix4.translationValues(-8.0, 0.0, 0.0),
onTap: onSubtitleClick, child: MaterialTextButton(
borderRadius: 20, label: AppLocalizations.of(context).manage_account,
padding: const EdgeInsetsDirectional.symmetric(horizontal: 8, vertical: 8), onTap: onSubtitleClick,
customStyle: const TextStyle(fontSize: 14, color: AppColor.colorTextButton), borderRadius: 20,
padding: const EdgeInsetsDirectional.symmetric(horizontal: 8, vertical: 8),
customStyle: const TextStyle(fontSize: 14, color: AppColor.colorTextButton),
),
) )
])), ])),
if (PlatformInfo.isMobile) if (PlatformInfo.isMobile)
@@ -1,8 +1,7 @@
import 'package:core/presentation/extensions/color_extension.dart'; import 'package:core/presentation/extensions/color_extension.dart';
import 'package:core/presentation/extensions/string_extension.dart';
import 'package:core/presentation/resources/image_paths.dart'; import 'package:core/presentation/resources/image_paths.dart';
import 'package:core/presentation/utils/style_utils.dart';
import 'package:core/presentation/views/button/icon_button_web.dart'; import 'package:core/presentation/views/button/icon_button_web.dart';
import 'package:core/presentation/views/text/text_overflow_builder.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart'; import 'package:flutter_svg/flutter_svg.dart';
import 'package:jmap_dart_client/jmap/identities/identity.dart'; import 'package:jmap_dart_client/jmap/identities/identity.dart';
@@ -65,10 +64,8 @@ class IdentityListTileBuilder extends StatelessWidget {
children: [ children: [
Padding( Padding(
padding: const EdgeInsets.only(bottom: 6), padding: const EdgeInsets.only(bottom: 6),
child: Text( child: TextOverflowBuilder(
(identity.name ?? '').withUnicodeCharacter, (identity.name ?? ''),
overflow: CommonTextStyle.defaultTextOverFlow,
softWrap: CommonTextStyle.defaultSoftWrap,
style: const TextStyle( style: const TextStyle(
fontWeight: FontWeight.w500, fontWeight: FontWeight.w500,
fontSize: 16, fontSize: 16,
@@ -122,15 +119,13 @@ class IdentityListTileBuilder extends StatelessWidget {
alignment: Alignment.centerLeft, alignment: Alignment.centerLeft,
child: SvgPicture.asset(imagePath, width: 15, height: 15))), child: SvgPicture.asset(imagePath, width: 15, height: 15))),
const SizedBox(width: 4), const SizedBox(width: 4),
Expanded(child: Text( Expanded(child: TextOverflowBuilder(
(text ?? '').withUnicodeCharacter, (text ?? ''),
style: const TextStyle( style: const TextStyle(
color: AppColor.colorEmailAddressFull, color: AppColor.colorEmailAddressFull,
fontWeight: FontWeight.normal, fontWeight: FontWeight.normal,
fontSize: 13, fontSize: 13,
), ),
overflow: CommonTextStyle.defaultTextOverFlow,
softWrap: CommonTextStyle.defaultSoftWrap
)) ))
]), ]),
); );
@@ -151,15 +146,13 @@ class IdentityListTileBuilder extends StatelessWidget {
decoration: TextDecoration.underline, decoration: TextDecoration.underline,
color: AppColor.colorTextButton))), color: AppColor.colorTextButton))),
const SizedBox(width: 4), const SizedBox(width: 4),
Expanded(child: Text( Expanded(child: TextOverflowBuilder(
(text ?? '').withUnicodeCharacter, (text ?? ''),
style: const TextStyle( style: const TextStyle(
color: AppColor.colorEmailAddressFull, color: AppColor.colorEmailAddressFull,
fontWeight: FontWeight.normal, fontWeight: FontWeight.normal,
fontSize: 13, fontSize: 13,
), ),
overflow: CommonTextStyle.defaultTextOverFlow,
softWrap: CommonTextStyle.defaultSoftWrap
)) ))
]), ]),
); );
@@ -1,9 +1,8 @@
import 'package:core/presentation/extensions/color_extension.dart'; import 'package:core/presentation/extensions/color_extension.dart';
import 'package:core/presentation/extensions/string_extension.dart';
import 'package:core/presentation/resources/image_paths.dart'; import 'package:core/presentation/resources/image_paths.dart';
import 'package:core/presentation/utils/responsive_utils.dart'; import 'package:core/presentation/utils/responsive_utils.dart';
import 'package:core/presentation/utils/style_utils.dart';
import 'package:core/presentation/views/responsive/responsive_widget.dart'; import 'package:core/presentation/views/responsive/responsive_widget.dart';
import 'package:core/presentation/views/text/text_overflow_builder.dart';
import 'package:core/utils/platform_info.dart'; import 'package:core/utils/platform_info.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart'; import 'package:flutter_svg/flutter_svg.dart';
@@ -204,11 +203,8 @@ class _MailboxSearchedItemBuilderState extends State<MailboxSearchedItemBuilder>
} }
Widget _buildTitleItem() { Widget _buildTitleItem() {
return Text( return TextOverflowBuilder(
(widget._presentationMailbox.name?.name ?? '').withUnicodeCharacter, (widget._presentationMailbox.name?.name ?? ''),
maxLines: 1,
overflow: CommonTextStyle.defaultTextOverFlow,
softWrap: CommonTextStyle.defaultSoftWrap,
style: const TextStyle( style: const TextStyle(
fontSize: 15, fontSize: 15,
color: Colors.black color: Colors.black
@@ -218,11 +214,8 @@ class _MailboxSearchedItemBuilderState extends State<MailboxSearchedItemBuilder>
Widget _buildSubtitleItem() { Widget _buildSubtitleItem() {
if (widget._presentationMailbox.mailboxPath?.isNotEmpty == true) { if (widget._presentationMailbox.mailboxPath?.isNotEmpty == true) {
return Text( return TextOverflowBuilder(
(widget._presentationMailbox.mailboxPath ?? '').withUnicodeCharacter, (widget._presentationMailbox.mailboxPath ?? ''),
maxLines: 1,
overflow: CommonTextStyle.defaultTextOverFlow,
softWrap: CommonTextStyle.defaultSoftWrap,
style: const TextStyle( style: const TextStyle(
fontSize: 11, fontSize: 11,
color: AppColor.colorMailboxPath, color: AppColor.colorMailboxPath,
@@ -230,11 +223,8 @@ class _MailboxSearchedItemBuilderState extends State<MailboxSearchedItemBuilder>
), ),
); );
} else if (widget._presentationMailbox.isTeamMailboxes) { } else if (widget._presentationMailbox.isTeamMailboxes) {
return Text( return TextOverflowBuilder(
(widget._presentationMailbox.emailTeamMailBoxes ?? '').withUnicodeCharacter, (widget._presentationMailbox.emailTeamMailBoxes ?? ''),
maxLines: 1,
softWrap: CommonTextStyle.defaultSoftWrap,
overflow: CommonTextStyle.defaultTextOverFlow,
style: const TextStyle( style: const TextStyle(
fontSize: 11, fontSize: 11,
color: AppColor.colorEmailAddressFull, color: AppColor.colorEmailAddressFull,
@@ -3,7 +3,6 @@ import 'package:core/presentation/extensions/color_extension.dart';
import 'package:core/presentation/resources/image_paths.dart'; import 'package:core/presentation/resources/image_paths.dart';
import 'package:core/presentation/utils/style_utils.dart'; import 'package:core/presentation/utils/style_utils.dart';
import 'package:core/presentation/views/button/icon_button_web.dart'; import 'package:core/presentation/views/button/icon_button_web.dart';
import 'package:core/utils/app_logger.dart';
import 'package:core/utils/direction_utils.dart'; import 'package:core/utils/direction_utils.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart'; import 'package:flutter_svg/flutter_svg.dart';
@@ -33,7 +32,6 @@ class AppBarSendingQueueWidget extends StatelessWidget {
final imagePaths = Get.find<ImagePaths>(); final imagePaths = Get.find<ImagePaths>();
return LayoutBuilder(builder: (context, constraints) { return LayoutBuilder(builder: (context, constraints) {
log('AppBarSendingQueueWidget::build(): MAX_WIDTH: ${constraints.maxWidth}');
return Container( return Container(
height: 52, height: 52,
color: Colors.white, color: Colors.white,
@@ -1,7 +1,6 @@
import 'package:core/presentation/extensions/color_extension.dart'; import 'package:core/presentation/extensions/color_extension.dart';
import 'package:core/presentation/resources/image_paths.dart'; import 'package:core/presentation/resources/image_paths.dart';
import 'package:core/utils/app_logger.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart'; import 'package:flutter_svg/flutter_svg.dart';
import 'package:tmail_ui_user/features/sending_queue/presentation/utils/sending_queue_utils.dart'; import 'package:tmail_ui_user/features/sending_queue/presentation/utils/sending_queue_utils.dart';
@@ -17,7 +16,6 @@ class BannerMessageSendingQueueWidget extends StatelessWidget {
final imagePath = getBinding<ImagePaths>(); final imagePath = getBinding<ImagePaths>();
return LayoutBuilder(builder: (context, constraints) { return LayoutBuilder(builder: (context, constraints) {
log('BannerMessageSendingQueueWidget::build(): MAX_WIDTH: ${constraints.maxWidth}');
return Container( return Container(
margin: SendingQueueUtils.getMarginBannerMessageByResponsiveSize(constraints.maxWidth), margin: SendingQueueUtils.getMarginBannerMessageByResponsiveSize(constraints.maxWidth),
padding: const EdgeInsets.all(16), padding: const EdgeInsets.all(16),
@@ -1,9 +1,8 @@
import 'package:core/presentation/extensions/color_extension.dart'; import 'package:core/presentation/extensions/color_extension.dart';
import 'package:core/presentation/extensions/string_extension.dart';
import 'package:core/presentation/resources/image_paths.dart'; import 'package:core/presentation/resources/image_paths.dart';
import 'package:core/presentation/utils/responsive_utils.dart'; import 'package:core/presentation/utils/responsive_utils.dart';
import 'package:core/presentation/utils/style_utils.dart'; import 'package:core/presentation/utils/style_utils.dart';
import 'package:core/utils/app_logger.dart'; import 'package:core/presentation/views/text/text_overflow_builder.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart'; import 'package:flutter_svg/flutter_svg.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
@@ -41,7 +40,6 @@ class SendingEmailTileWidget extends StatelessWidget {
final imagePaths = Get.find<ImagePaths>(); final imagePaths = Get.find<ImagePaths>();
return LayoutBuilder(builder: (context, constraints) { return LayoutBuilder(builder: (context, constraints) {
log('SendingEmailTileWidget::build(): MAX_WIDTH: ${constraints.maxWidth}');
return Material( return Material(
color: Colors.transparent, color: Colors.transparent,
child: InkWell( child: InkWell(
@@ -90,11 +88,8 @@ class SendingEmailTileWidget extends StatelessWidget {
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Row(children: [ Row(children: [
Expanded(child: Text( Expanded(child: TextOverflowBuilder(
AppLocalizations.of(context).titleRecipientSendingEmail(sendingEmail.presentationEmail.recipientsName()).withUnicodeCharacter, AppLocalizations.of(context).titleRecipientSendingEmail(sendingEmail.presentationEmail.recipientsName()),
softWrap: CommonTextStyle.defaultSoftWrap,
overflow: CommonTextStyle.defaultTextOverFlow,
maxLines: 1,
style: TextStyle( style: TextStyle(
fontSize: 15, fontSize: 15,
color: sendingEmail.sendingState.getTitleSendingEmailItemColor(), color: sendingEmail.sendingState.getTitleSendingEmailItemColor(),
@@ -142,11 +137,8 @@ class SendingEmailTileWidget extends StatelessWidget {
) )
]), ]),
const SizedBox(height: 8), const SizedBox(height: 8),
Text( TextOverflowBuilder(
sendingEmail.presentationEmail.getEmailTitle().withUnicodeCharacter, sendingEmail.presentationEmail.getEmailTitle(),
softWrap: CommonTextStyle.defaultSoftWrap,
overflow: CommonTextStyle.defaultTextOverFlow,
maxLines: 1,
style: TextStyle( style: TextStyle(
fontSize: 13, fontSize: 13,
color: sendingEmail.sendingState.getSubTitleSendingEmailItemColor(), color: sendingEmail.sendingState.getSubTitleSendingEmailItemColor(),
@@ -5,6 +5,7 @@ import 'package:core/presentation/resources/image_paths.dart';
import 'package:core/presentation/utils/responsive_utils.dart'; import 'package:core/presentation/utils/responsive_utils.dart';
import 'package:core/presentation/utils/style_utils.dart'; import 'package:core/presentation/utils/style_utils.dart';
import 'package:core/presentation/views/text/rich_text_builder.dart'; import 'package:core/presentation/views/text/rich_text_builder.dart';
import 'package:core/presentation/views/text/text_overflow_builder.dart';
import 'package:core/utils/platform_info.dart'; import 'package:core/utils/platform_info.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart'; import 'package:flutter_svg/flutter_svg.dart';
@@ -39,11 +40,8 @@ mixin BaseEmailItemTile {
decoration: BoxDecoration( decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10), borderRadius: BorderRadius.circular(10),
color: AppColor.backgroundCounterMailboxColor), color: AppColor.backgroundCounterMailboxColor),
child: Text( child: TextOverflowBuilder(
email.mailboxName.withUnicodeCharacter, email.mailboxName,
maxLines: 1,
softWrap: CommonTextStyle.defaultSoftWrap,
overflow: CommonTextStyle.defaultTextOverFlow,
style: const TextStyle( style: const TextStyle(
fontSize: 10, fontSize: 10,
color: AppColor.mailboxTextColor, color: AppColor.mailboxTextColor,
@@ -85,7 +83,7 @@ mixin BaseEmailItemTile {
) { ) {
if (isSearchEnabled(isSearchEmailRunning, query)) { if (isSearchEnabled(isSearchEmailRunning, query)) {
return RichTextBuilder( return RichTextBuilder(
informationSender(email, mailbox).withUnicodeCharacter, informationSender(email, mailbox).overflow,
query?.value ?? '', query?.value ?? '',
TextStyle( TextStyle(
fontSize: 15, fontSize: 15,
@@ -98,16 +96,13 @@ mixin BaseEmailItemTile {
fontWeight: buildFontForReadEmail(email)) fontWeight: buildFontForReadEmail(email))
).build(); ).build();
} else { } else {
return Text( return TextOverflowBuilder(
informationSender(email, mailbox).withUnicodeCharacter, informationSender(email, mailbox),
softWrap: CommonTextStyle.defaultSoftWrap, style: TextStyle(
fontSize: 15,
overflow: CommonTextStyle.defaultTextOverFlow, overflow: CommonTextStyle.defaultTextOverFlow,
maxLines: 1, color: buildTextColorForReadEmail(email),
style: TextStyle( fontWeight: buildFontForReadEmail(email))
fontSize: 15,
overflow: CommonTextStyle.defaultTextOverFlow,
color: buildTextColorForReadEmail(email),
fontWeight: buildFontForReadEmail(email))
); );
} }
} }
@@ -119,7 +114,7 @@ mixin BaseEmailItemTile {
) { ) {
if (isSearchEnabled(isSearchEmailRunning, query)) { if (isSearchEnabled(isSearchEmailRunning, query)) {
return RichTextBuilder( return RichTextBuilder(
email.getEmailTitle().withUnicodeCharacter, email.getEmailTitle().overflow,
query?.value ?? '', query?.value ?? '',
TextStyle( TextStyle(
fontSize: 13, fontSize: 13,
@@ -132,15 +127,12 @@ mixin BaseEmailItemTile {
fontWeight: buildFontForReadEmail(email)) fontWeight: buildFontForReadEmail(email))
).build(); ).build();
} else { } else {
return Text( return TextOverflowBuilder(
email.getEmailTitle().withUnicodeCharacter, email.getEmailTitle(),
softWrap: CommonTextStyle.defaultSoftWrap, style: TextStyle(
overflow: CommonTextStyle.defaultTextOverFlow, fontSize: 13,
maxLines: 1, color: buildTextColorForReadEmail(email),
style: TextStyle( fontWeight: buildFontForReadEmail(email))
fontSize: 13,
color: buildTextColorForReadEmail(email),
fontWeight: buildFontForReadEmail(email))
); );
} }
} }
@@ -152,7 +144,7 @@ mixin BaseEmailItemTile {
) { ) {
if (isSearchEnabled(isSearchEmailRunning, query)) { if (isSearchEnabled(isSearchEmailRunning, query)) {
return RichTextBuilder( return RichTextBuilder(
email.getPartialContent().withUnicodeCharacter, email.getPartialContent().overflow,
query?.value ?? '', query?.value ?? '',
const TextStyle( const TextStyle(
fontSize: 13, fontSize: 13,
@@ -164,15 +156,12 @@ mixin BaseEmailItemTile {
backgroundColor: AppColor.bgWordSearch) backgroundColor: AppColor.bgWordSearch)
).build(); ).build();
} else { } else {
return Text( return TextOverflowBuilder(
email.getPartialContent().withUnicodeCharacter, email.getPartialContent(),
maxLines: 1, style: const TextStyle(
softWrap: CommonTextStyle.defaultSoftWrap, fontSize: 13,
overflow: CommonTextStyle.defaultTextOverFlow, color: AppColor.colorContentEmail,
style: const TextStyle( fontWeight: FontWeight.normal)
fontSize: 13,
color: AppColor.colorContentEmail,
fontWeight: FontWeight.normal)
); );
} }
} }