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,11 +109,16 @@ 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: () {
AppUtils.copyEmailAddressToClipboard(_context, _emailAddress.emailAddress);
},
borderRadius: const BorderRadius.all(Radius.circular(8)),
child: Padding(
padding: const EdgeInsetsDirectional.symmetric(horizontal: 16, vertical: 8),
child: Text( child: Text(
_emailAddress.emailAddress, _emailAddress.emailAddress,
textAlign: TextAlign.center, textAlign: TextAlign.center,
@@ -123,7 +129,10 @@ class EmailAddressBottomSheetBuilder {
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,12 +88,17 @@ 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);
},
borderRadius: const BorderRadius.all(Radius.circular(8)),
child: Padding(
padding: const EdgeInsetsDirectional.symmetric(horizontal: 16, vertical: 8),
child: Text(
_emailAddress.emailAddress, _emailAddress.emailAddress,
textAlign: TextAlign.center, textAlign: TextAlign.center,
overflow: CommonTextStyle.defaultTextOverFlow, overflow: CommonTextStyle.defaultTextOverFlow,
@@ -102,7 +108,9 @@ class EmailAddressDialogBuilder extends StatelessWidget {
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(