TF-1915 Show From address when list identity is empty

(cherry picked from commit 56a97d3ae84418e070d45f9c9d6b258b0a8bf3db)
This commit is contained in:
dab246
2023-06-08 17:05:00 +07:00
committed by Dat Vu
parent 9b5f533579
commit a08376aa3d
2 changed files with 166 additions and 151 deletions
@@ -300,71 +300,73 @@ class ComposerView extends GetWidget<ComposerController>
color: AppColor.colorHintEmailAddressInput color: AppColor.colorHintEmailAddressInput
) )
), ),
const SizedBox(width: 12),
if (controller.listIdentities.isNotEmpty) if (controller.listIdentities.isNotEmpty)
DropdownButtonHideUnderline(child: DropdownButton2<Identity>( Padding(
isExpanded: true, padding: const EdgeInsets.only(left: 12),
customButton: SvgPicture.asset(imagePaths.icEditIdentity), child: DropdownButtonHideUnderline(child: DropdownButton2<Identity>(
items: controller.listIdentities.map((item) => DropdownMenuItem<Identity>( isExpanded: true,
value: item, customButton: SvgPicture.asset(imagePaths.icEditIdentity),
child: Container( items: controller.listIdentities.map((item) => DropdownMenuItem<Identity>(
alignment: Alignment.centerLeft, value: item,
padding: const EdgeInsets.symmetric(horizontal: 8), child: Container(
alignment: Alignment.centerLeft,
padding: const EdgeInsets.symmetric(horizontal: 8),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(12),
color: item == controller.identitySelected.value
? AppColor.colorBgMenuItemDropDownSelected
: Colors.transparent
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
children: [
Text(
item.name ?? '',
style: const TextStyle(
fontSize: 16,
fontWeight: FontWeight.normal,
color: Colors.black
),
maxLines: 1,
overflow: CommonTextStyle.defaultTextOverFlow,
softWrap: CommonTextStyle.defaultSoftWrap,
),
Text(
item.email ?? '',
style: const TextStyle(
fontSize: 13,
fontWeight: FontWeight.normal,
color: AppColor.colorHintSearchBar
),
maxLines: 1,
overflow: CommonTextStyle.defaultTextOverFlow,
softWrap: CommonTextStyle.defaultSoftWrap,
)
]
),
),
)).toList(),
onChanged: (newIdentity) => controller.selectIdentity(newIdentity),
dropdownStyleData: DropdownStyleData(
maxHeight: 240,
width: 300,
decoration: BoxDecoration( decoration: BoxDecoration(
borderRadius: BorderRadius.circular(12), borderRadius: BorderRadius.circular(20),
color: item == controller.identitySelected.value color: Colors.white),
? AppColor.colorBgMenuItemDropDownSelected elevation: 4,
: Colors.transparent scrollbarTheme: ScrollbarThemeData(
), radius: const Radius.circular(40),
child: Column( thickness: MaterialStateProperty.all<double>(6),
crossAxisAlignment: CrossAxisAlignment.start, thumbVisibility: MaterialStateProperty.all<bool>(true),
mainAxisSize: MainAxisSize.min,
children: [
Text(
item.name ?? '',
style: const TextStyle(
fontSize: 16,
fontWeight: FontWeight.normal,
color: Colors.black
),
maxLines: 1,
overflow: CommonTextStyle.defaultTextOverFlow,
softWrap: CommonTextStyle.defaultSoftWrap,
),
Text(
item.email ?? '',
style: const TextStyle(
fontSize: 13,
fontWeight: FontWeight.normal,
color: AppColor.colorHintSearchBar
),
maxLines: 1,
overflow: CommonTextStyle.defaultTextOverFlow,
softWrap: CommonTextStyle.defaultSoftWrap,
)
]
), ),
), ),
)).toList(), menuItemStyleData: const MenuItemStyleData(
onChanged: (newIdentity) => controller.selectIdentity(newIdentity), height: 55,
dropdownStyleData: DropdownStyleData( padding: EdgeInsets.symmetric(horizontal: 8),
maxHeight: 240, )
width: 300, )),
decoration: BoxDecoration( ),
borderRadius: BorderRadius.circular(20),
color: Colors.white),
elevation: 4,
scrollbarTheme: ScrollbarThemeData(
radius: const Radius.circular(40),
thickness: MaterialStateProperty.all<double>(6),
thumbVisibility: MaterialStateProperty.all<bool>(true),
),
),
menuItemStyleData: const MenuItemStyleData(
height: 55,
padding: EdgeInsets.symmetric(horizontal: 8),
)
)),
Expanded(child: Padding( Expanded(child: Padding(
padding: EdgeInsets.only( padding: EdgeInsets.only(
right: AppUtils.isDirectionRTL(context) ? 12 : 8, right: AppUtils.isDirectionRTL(context) ? 12 : 8,
@@ -1,6 +1,7 @@
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/html_extension.dart'; import 'package:core/presentation/extensions/html_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/html_transformer/html_template.dart'; import 'package:core/presentation/utils/html_transformer/html_template.dart';
@@ -60,9 +61,7 @@ class ComposerView extends GetWidget<ComposerController>
children: [ children: [
Obx(() => _buildAppBarForMobile(context, controller.isEnableEmailSendButton.value)), Obx(() => _buildAppBarForMobile(context, controller.isEnableEmailSendButton.value)),
const Divider(color: AppColor.colorDividerComposer, height: 1), const Divider(color: AppColor.colorDividerComposer, height: 1),
Obx(() => controller.identitySelected.value != null _buildFromEmailAddress(context),
? _buildFromEmailAddress(context)
: const SizedBox.shrink()),
Obx(() => controller.identitySelected.value != null Obx(() => controller.identitySelected.value != null
? const Divider(color: AppColor.colorDividerComposer, height: 1) ? const Divider(color: AppColor.colorDividerComposer, height: 1)
: const SizedBox.shrink()), : const SizedBox.shrink()),
@@ -414,9 +413,7 @@ class ComposerView extends GetWidget<ComposerController>
right: AppUtils.isDirectionRTL(context) ? 12 : 0, right: AppUtils.isDirectionRTL(context) ? 12 : 0,
), ),
child: Column(children: [ child: Column(children: [
Obx(() => controller.identitySelected.value != null _buildFromEmailAddress(context),
? _buildFromEmailAddress(context)
: const SizedBox.shrink()),
Obx(() => controller.identitySelected.value != null Obx(() => controller.identitySelected.value != null
? const Divider(color: AppColor.colorDividerComposer, height: 1) ? const Divider(color: AppColor.colorDividerComposer, height: 1)
: const SizedBox.shrink()), : const SizedBox.shrink()),
@@ -465,96 +462,112 @@ class ComposerView extends GetWidget<ComposerController>
} }
Widget _buildFromEmailAddress(BuildContext context) { Widget _buildFromEmailAddress(BuildContext context) {
return Padding( return Obx(() {
padding: EdgeInsets.only( return Padding(
padding: EdgeInsets.only(
left: AppUtils.isDirectionRTL(context) ? 0 : responsiveUtils.isMobile(context) ? 16 : 0, left: AppUtils.isDirectionRTL(context) ? 0 : responsiveUtils.isMobile(context) ? 16 : 0,
right: AppUtils.isDirectionRTL(context) ? responsiveUtils.isMobile(context) ? 16 : 0 : 0, right: AppUtils.isDirectionRTL(context) ? responsiveUtils.isMobile(context) ? 16 : 0 : 0,
top: 12, top: 12,
bottom: 12), bottom: 12),
child: Row(children: [ child: Row(children: [
Text('${AppLocalizations.of(context).from_email_address_prefix}:', Text(
style: const TextStyle(fontSize: 15, color: AppColor.colorHintEmailAddressInput)), '${AppLocalizations.of(context).from_email_address_prefix}:',
const SizedBox(width: 12), style: const TextStyle(
DropdownButtonHideUnderline( fontSize: 15,
child: DropdownButton2<Identity>( color: AppColor.colorHintEmailAddressInput
isExpanded: true,
customButton: SvgPicture.asset(imagePaths.icEditIdentity),
items: controller.listIdentities.map((item) => DropdownMenuItem<Identity>(
value: item,
child: PointerInterceptor(
child: Container(
alignment: Alignment.centerLeft,
padding: const EdgeInsets.symmetric(horizontal: 8),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(12),
color: item == controller.identitySelected.value ? AppColor.colorBgMenuItemDropDownSelected : Colors.transparent),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
children: [
Text(
item.name ?? '',
style: const TextStyle(
fontSize: 16,
fontWeight: FontWeight.normal,
color: Colors.black),
maxLines: 1,
overflow: CommonTextStyle.defaultTextOverFlow,
softWrap: CommonTextStyle.defaultSoftWrap
),
Text(
item.email ?? '',
style: const TextStyle(
fontSize: 13,
fontWeight: FontWeight.normal,
color: AppColor.colorHintSearchBar),
maxLines: 1,
overflow: CommonTextStyle.defaultTextOverFlow,
softWrap: CommonTextStyle.defaultSoftWrap
)
]
),
),
),
)).toList(),
onChanged: (newIdentity) => controller.selectIdentity(newIdentity),
dropdownStyleData: DropdownStyleData(
maxHeight: 240,
width: 370,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(20),
color: Colors.white),
elevation: 4,
scrollbarTheme: ScrollbarThemeData(
radius: const Radius.circular(40),
thickness: MaterialStateProperty.all<double>(6),
thumbVisibility: MaterialStateProperty.all<bool>(true),
),
),
menuItemStyleData: const MenuItemStyleData(
height: 55,
padding: EdgeInsets.symmetric(horizontal: 8),
) )
), ),
), if (controller.listIdentities.isNotEmpty)
Expanded(child: Padding( Padding(
padding: EdgeInsets.only( padding: const EdgeInsets.only(left: 12),
right: AppUtils.isDirectionRTL(context) ? 12 : 8, child: DropdownButtonHideUnderline(
left: AppUtils.isDirectionRTL(context) ? 8 : 12, child: DropdownButton2<Identity>(
), isExpanded: true,
child: Text( customButton: SvgPicture.asset(imagePaths.icEditIdentity),
controller.identitySelected.value?.email ?? '', items: controller.listIdentities.map((item) => DropdownMenuItem<Identity>(
maxLines: 1, value: item,
overflow: CommonTextStyle.defaultTextOverFlow, child: PointerInterceptor(
softWrap: CommonTextStyle.defaultSoftWrap, child: Container(
style: const TextStyle( alignment: Alignment.centerLeft,
fontSize: 17, padding: const EdgeInsets.symmetric(horizontal: 8),
fontWeight: FontWeight.normal, decoration: BoxDecoration(
color: AppColor.colorEmailAddressPrefix), borderRadius: BorderRadius.circular(12),
) color: item == controller.identitySelected.value
)), ? AppColor.colorBgMenuItemDropDownSelected
]), : Colors.transparent
); ),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
children: [
Text(
item.name ?? '',
style: const TextStyle(
fontSize: 16,
fontWeight: FontWeight.normal,
color: Colors.black),
maxLines: 1,
overflow: CommonTextStyle.defaultTextOverFlow,
softWrap: CommonTextStyle.defaultSoftWrap
),
Text(
item.email ?? '',
style: const TextStyle(
fontSize: 13,
fontWeight: FontWeight.normal,
color: AppColor.colorHintSearchBar),
maxLines: 1,
overflow: CommonTextStyle.defaultTextOverFlow,
softWrap: CommonTextStyle.defaultSoftWrap
)
]
),
),
),
)).toList(),
onChanged: (newIdentity) => controller.selectIdentity(newIdentity),
dropdownStyleData: DropdownStyleData(
maxHeight: 240,
width: 370,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(20),
color: Colors.white),
elevation: 4,
scrollbarTheme: ScrollbarThemeData(
radius: const Radius.circular(40),
thickness: MaterialStateProperty.all<double>(6),
thumbVisibility: MaterialStateProperty.all<bool>(true),
),
),
menuItemStyleData: const MenuItemStyleData(
height: 55,
padding: EdgeInsets.symmetric(horizontal: 8),
)
),
),
),
Expanded(child: Padding(
padding: EdgeInsets.only(
right: AppUtils.isDirectionRTL(context) ? 12 : 8,
left: AppUtils.isDirectionRTL(context) ? 8 : 12,
),
child: Text(
controller.identitySelected.value != null
? (controller.identitySelected.value?.email ?? '').withUnicodeCharacter
: (controller.userProfile?.email ?? '').withUnicodeCharacter,
maxLines: 1,
overflow: CommonTextStyle.defaultTextOverFlow,
softWrap: CommonTextStyle.defaultSoftWrap,
style: const TextStyle(
fontSize: 17,
fontWeight: FontWeight.normal,
color: AppColor.colorEmailAddressPrefix
),
)
)),
]),
);
});
} }
Widget _buildEmailAddress(BuildContext context, BoxConstraints constraints) { Widget _buildEmailAddress(BuildContext context, BoxConstraints constraints) {