TF-1994 Enable long press to copy an email address in bottom sheet dialog

(cherry picked from commit 17a95bab63543f8c1bf46bf8aaac3bb518700a14)
This commit is contained in:
dab246
2023-07-10 14:47:50 +07:00
committed by Dat Vu
parent 99693b8f4a
commit 7cb41b4c44
2 changed files with 43 additions and 26 deletions
@@ -7,6 +7,7 @@ import 'package:jmap_dart_client/jmap/mail/email/email_address.dart';
import 'package:model/model.dart'; import 'package:model/model.dart';
import 'package:pointer_interceptor/pointer_interceptor.dart'; import 'package:pointer_interceptor/pointer_interceptor.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';
typedef OnCloseBottomSheetAction = void Function(); typedef OnCloseBottomSheetAction = void Function();
typedef OnCopyEmailAddressBottomSheetAction = void Function(EmailAddress); typedef OnCopyEmailAddressBottomSheetAction = void Function(EmailAddress);
@@ -108,22 +109,30 @@ class EmailAddressBottomSheetBuilder {
fontWeight: FontWeight.w600, fontWeight: FontWeight.w600,
color: AppColor.colorNameEmail), color: AppColor.colorNameEmail),
)), )),
Padding( Material(
padding: EdgeInsets.only( color: Colors.transparent,
left: 16, child: InkWell(
right: 16, onTap: () {},
top: _emailAddress.displayName.isNotEmpty ? 12 : 16), onLongPress: () {
child: Text( AppUtils.copyEmailAddressToClipboard(_context, _emailAddress.emailAddress);
_emailAddress.emailAddress, },
textAlign: TextAlign.center, borderRadius: const BorderRadius.all(Radius.circular(8)),
overflow: CommonTextStyle.defaultTextOverFlow, child: Padding(
softWrap: CommonTextStyle.defaultSoftWrap, padding: const EdgeInsetsDirectional.symmetric(horizontal: 16, vertical: 8),
maxLines: 2, child: Text(
style: const TextStyle( _emailAddress.emailAddress,
textAlign: TextAlign.center,
overflow: CommonTextStyle.defaultTextOverFlow,
softWrap: CommonTextStyle.defaultSoftWrap,
maxLines: 2,
style: const TextStyle(
fontSize: 17, fontSize: 17,
fontWeight: FontWeight.normal, fontWeight: FontWeight.normal,
color: AppColor.colorMessageConfirmDialog), color: AppColor.colorMessageConfirmDialog),
)), )
),
),
),
Material( Material(
borderRadius: BorderRadius.circular(20), borderRadius: BorderRadius.circular(20),
color: Colors.transparent, color: Colors.transparent,
@@ -6,6 +6,7 @@ import 'package:get/get.dart';
import 'package:jmap_dart_client/jmap/mail/email/email_address.dart'; import 'package:jmap_dart_client/jmap/mail/email/email_address.dart';
import 'package:model/model.dart'; import 'package:model/model.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';
typedef OnCloseDialogAction = void Function(); typedef OnCloseDialogAction = void Function();
typedef OnCopyEmailAddressDialogAction = void Function(EmailAddress); typedef OnCopyEmailAddressDialogAction = void Function(EmailAddress);
@@ -87,22 +88,29 @@ class EmailAddressDialogBuilder extends StatelessWidget {
color: AppColor.colorNameEmail), color: AppColor.colorNameEmail),
)) ))
), ),
Padding( Material(
padding: EdgeInsets.only( color: Colors.transparent,
left: 16, child: InkWell(
right: 16, onTap: () {},
top: _emailAddress.displayName.isNotEmpty ? 12 : 16), onLongPress: () {
child: Center(child: Text( AppUtils.copyEmailAddressToClipboard(context, _emailAddress.emailAddress);
_emailAddress.emailAddress, },
textAlign: TextAlign.center, borderRadius: const BorderRadius.all(Radius.circular(8)),
overflow: CommonTextStyle.defaultTextOverFlow, child: Padding(
softWrap: CommonTextStyle.defaultSoftWrap, padding: const EdgeInsetsDirectional.symmetric(horizontal: 16, vertical: 8),
maxLines: 2, child: Text(
style: const TextStyle( _emailAddress.emailAddress,
textAlign: TextAlign.center,
overflow: CommonTextStyle.defaultTextOverFlow,
softWrap: CommonTextStyle.defaultSoftWrap,
maxLines: 2,
style: const TextStyle(
fontSize: 17, fontSize: 17,
fontWeight: FontWeight.normal, fontWeight: FontWeight.normal,
color: AppColor.colorMessageConfirmDialog), color: AppColor.colorMessageConfirmDialog),
)) )
),
),
), ),
Padding(padding: const EdgeInsets.symmetric(horizontal: 16), Padding(padding: const EdgeInsets.symmetric(horizontal: 16),
child: Center(child: Material( child: Center(child: Material(