TF-495 Implement linter for composer
This commit is contained in:
@@ -54,7 +54,7 @@ class AttachmentFileComposerBuilder {
|
||||
color: Colors.white),
|
||||
child: Stack(children: [
|
||||
ListTile(
|
||||
contentPadding: EdgeInsets.only(right: kIsWeb ? 16 : 18),
|
||||
contentPadding: const EdgeInsets.only(right: kIsWeb ? 16 : 18),
|
||||
onTap: () {},
|
||||
leading: Transform(
|
||||
transform: Matrix4.translationValues(8.0, kIsWeb ? -3.0 : -5.0, 0.0),
|
||||
@@ -65,7 +65,7 @@ class AttachmentFileComposerBuilder {
|
||||
attachment.name ?? '',
|
||||
maxLines: 2,
|
||||
overflow: TextOverflow.ellipsis,
|
||||
style: TextStyle(fontSize: 12, color: AppColor.colorNameEmail, fontWeight: FontWeight.w500),
|
||||
style: const TextStyle(fontSize: 12, color: AppColor.colorNameEmail, fontWeight: FontWeight.w500),
|
||||
)),
|
||||
subtitle: attachment.size != null && attachment.size?.value != 0
|
||||
? Transform(
|
||||
@@ -74,7 +74,7 @@ class AttachmentFileComposerBuilder {
|
||||
filesize(attachment.size?.value, 0),
|
||||
maxLines: 1,
|
||||
overflow: TextOverflow.ellipsis,
|
||||
style: TextStyle(fontSize: 10, color: AppColor.colorContentEmail, fontWeight: FontWeight.normal)))
|
||||
style: const TextStyle(fontSize: 10, color: AppColor.colorContentEmail, fontWeight: FontWeight.normal)))
|
||||
: null,
|
||||
),
|
||||
Positioned(right: kIsWeb ? -5 : -12, top: kIsWeb ? -5 : -12, child: buildIconWeb(
|
||||
|
||||
@@ -30,7 +30,7 @@ class EmailAddressInputBuilder {
|
||||
final TextEditingController? controller;
|
||||
final bool? isInitial;
|
||||
|
||||
List<EmailAddress> _listEmailAddress = <EmailAddress>[];
|
||||
List<EmailAddress> listEmailAddress = <EmailAddress>[];
|
||||
|
||||
OnUpdateListEmailAddressAction? _onUpdateListEmailAddressAction;
|
||||
OnSuggestionEmailAddress? _onSuggestionEmailAddress;
|
||||
@@ -72,7 +72,7 @@ class EmailAddressInputBuilder {
|
||||
this._context,
|
||||
this._imagePaths,
|
||||
this._prefixEmailAddress,
|
||||
this._listEmailAddress,
|
||||
this.listEmailAddress,
|
||||
this._listEmailAddressType,
|
||||
{
|
||||
this.isInitial,
|
||||
@@ -85,7 +85,7 @@ class EmailAddressInputBuilder {
|
||||
return Row(
|
||||
children: [
|
||||
Text('${_prefixEmailAddress.asName(_context)}:',
|
||||
style: TextStyle(fontSize: 15, color: AppColor.colorHintEmailAddressInput)),
|
||||
style: const TextStyle(fontSize: 15, color: AppColor.colorHintEmailAddressInput)),
|
||||
Expanded(child: Padding(
|
||||
padding: EdgeInsets.only(right: _listEmailAddressType.length == 2 ? 8 : 8),
|
||||
child: _buildTagEditor())),
|
||||
@@ -93,8 +93,8 @@ class EmailAddressInputBuilder {
|
||||
Row(children: [
|
||||
if (!_listEmailAddressType.contains(PrefixEmailAddress.cc))
|
||||
buildTextIcon(AppLocalizations.of(_context).cc_email_address_prefix,
|
||||
padding: EdgeInsets.all(5),
|
||||
textStyle: TextStyle(
|
||||
padding: const EdgeInsets.all(5),
|
||||
textStyle: const TextStyle(
|
||||
fontSize: 15,
|
||||
fontWeight: FontWeight.normal,
|
||||
decoration: TextDecoration.underline,
|
||||
@@ -102,14 +102,14 @@ class EmailAddressInputBuilder {
|
||||
onTap: () => _onAddEmailAddressTypeAction?.call(PrefixEmailAddress.cc)),
|
||||
if (!_listEmailAddressType.contains(PrefixEmailAddress.bcc))
|
||||
buildTextIcon(AppLocalizations.of(_context).bcc_email_address_prefix,
|
||||
padding: EdgeInsets.all(5),
|
||||
textStyle: TextStyle(
|
||||
padding: const EdgeInsets.all(5),
|
||||
textStyle: const TextStyle(
|
||||
fontSize: 15,
|
||||
fontWeight: FontWeight.normal,
|
||||
decoration: TextDecoration.underline,
|
||||
color: AppColor.lineItemListColor),
|
||||
onTap: () => _onAddEmailAddressTypeAction?.call(PrefixEmailAddress.bcc)),
|
||||
SizedBox(width: 10),
|
||||
const SizedBox(width: 10),
|
||||
]),
|
||||
if (_prefixEmailAddress != PrefixEmailAddress.to)
|
||||
buildIconWeb(
|
||||
@@ -121,7 +121,7 @@ class EmailAddressInputBuilder {
|
||||
|
||||
Widget _buildTagEditor() {
|
||||
return StatefulBuilder(builder: (BuildContext context, StateSetter setState) {
|
||||
final newListEmailAddress = _isCollapse ? _listEmailAddress.sublist(0, 1) : _listEmailAddress;
|
||||
final newListEmailAddress = _isCollapse ? listEmailAddress.sublist(0, 1) : listEmailAddress;
|
||||
return FocusScope(child: Focus(
|
||||
onFocusChange: (focus) => _onFocusEmailAddressChangeAction?.call(_prefixEmailAddress, focus),
|
||||
child: TagEditor<EmailAddress>(
|
||||
@@ -131,7 +131,7 @@ class EmailAddressInputBuilder {
|
||||
textInputAction: TextInputAction.done,
|
||||
hasAddButton: false,
|
||||
tagSpacing: 8,
|
||||
delimiters: [' '],
|
||||
delimiters: const [' '],
|
||||
autofocus: _prefixEmailAddress != PrefixEmailAddress.to,
|
||||
minTextFieldWidth: 20,
|
||||
resetTextOnSubmitted: true,
|
||||
@@ -139,48 +139,48 @@ class EmailAddressInputBuilder {
|
||||
suggestionsBoxBackgroundColor: Colors.white,
|
||||
suggestionsBoxRadius: 20,
|
||||
iconSuggestionBox: SvgPicture.asset(_imagePaths.icAddEmailAddress, fit: BoxFit.fill),
|
||||
textStyle: TextStyle(color: AppColor.colorEmailAddress, fontSize: 14, fontWeight: FontWeight.w500),
|
||||
textStyle: const TextStyle(color: AppColor.colorEmailAddress, fontSize: 14, fontWeight: FontWeight.w500),
|
||||
onSubmitted: (value) {
|
||||
setState(() => _listEmailAddress.add(EmailAddress(null, value)));
|
||||
_onUpdateListEmailAddressAction?.call(_prefixEmailAddress, _listEmailAddress);
|
||||
setState(() => listEmailAddress.add(EmailAddress(null, value)));
|
||||
_onUpdateListEmailAddressAction?.call(_prefixEmailAddress, listEmailAddress);
|
||||
},
|
||||
inputDecoration: InputDecoration(border: InputBorder.none),
|
||||
inputDecoration: const InputDecoration(border: InputBorder.none),
|
||||
tagBuilder: (context, index) => Stack(alignment: Alignment.centerRight, children: [
|
||||
Padding(
|
||||
padding: EdgeInsets.only(top: kIsWeb ? 8 : 0, right: _isCollapse ? 50 : 0),
|
||||
child: InkWell(
|
||||
onTap: () => _isCollapse ? _onShowFullListEmailAddressAction?.call(_prefixEmailAddress) : null,
|
||||
child: Chip(
|
||||
labelPadding: EdgeInsets.only(left: 12, right: 12, bottom: 2),
|
||||
labelPadding: const EdgeInsets.only(left: 12, right: 12, bottom: 2),
|
||||
label: Text(newListEmailAddress[index].asString(), maxLines: 1, overflow: kIsWeb ? null : TextOverflow.ellipsis),
|
||||
deleteIcon: SvgPicture.asset(_imagePaths.icClose, fit: BoxFit.fill),
|
||||
labelStyle: TextStyle(color: Colors.black, fontSize: 17, fontWeight: FontWeight.normal),
|
||||
backgroundColor: _isEmailAddressValid(_listEmailAddress[index].emailAddress) ? AppColor.colorEmailAddressTag : Colors.white,
|
||||
labelStyle: const TextStyle(color: Colors.black, fontSize: 17, fontWeight: FontWeight.normal),
|
||||
backgroundColor: _isEmailAddressValid(listEmailAddress[index].emailAddress) ? AppColor.colorEmailAddressTag : Colors.white,
|
||||
shape: RoundedRectangleBorder(
|
||||
borderRadius: BorderRadius.circular(10),
|
||||
side: BorderSide(
|
||||
width: _isEmailAddressValid(_listEmailAddress[index].emailAddress) ? 0 : 1,
|
||||
color: _isEmailAddressValid(_listEmailAddress[index].emailAddress) ? AppColor.colorEmailAddressTag : AppColor.colorBorderEmailAddressInvalid),
|
||||
width: _isEmailAddressValid(listEmailAddress[index].emailAddress) ? 0 : 1,
|
||||
color: _isEmailAddressValid(listEmailAddress[index].emailAddress) ? AppColor.colorEmailAddressTag : AppColor.colorBorderEmailAddressInvalid),
|
||||
),
|
||||
avatar: newListEmailAddress[index].displayName.isNotEmpty
|
||||
? CircleAvatar(
|
||||
backgroundColor: AppColor.colorTextButton,
|
||||
child: Text(
|
||||
_listEmailAddress[index].displayName[0].toUpperCase(),
|
||||
style: TextStyle(color: Colors.white, fontSize: 12, fontWeight: FontWeight.w500)))
|
||||
listEmailAddress[index].displayName[0].toUpperCase(),
|
||||
style: const TextStyle(color: Colors.white, fontSize: 12, fontWeight: FontWeight.w500)))
|
||||
: null,
|
||||
onDeleted: () {
|
||||
setState(() => _listEmailAddress.removeAt(index));
|
||||
_onUpdateListEmailAddressAction?.call(_prefixEmailAddress, _listEmailAddress);
|
||||
setState(() => listEmailAddress.removeAt(index));
|
||||
_onUpdateListEmailAddressAction?.call(_prefixEmailAddress, listEmailAddress);
|
||||
},
|
||||
)
|
||||
)
|
||||
),
|
||||
if (_isCollapse) _buildCounter(context, _listEmailAddress.length - newListEmailAddress.length),
|
||||
if (_isCollapse) _buildCounter(context, listEmailAddress.length - newListEmailAddress.length),
|
||||
]),
|
||||
onTagChanged: (String value) {
|
||||
setState(() => _listEmailAddress.add(EmailAddress(null, value)));
|
||||
_onUpdateListEmailAddressAction?.call(_prefixEmailAddress, _listEmailAddress);
|
||||
setState(() => listEmailAddress.add(EmailAddress(null, value)));
|
||||
_onUpdateListEmailAddressAction?.call(_prefixEmailAddress, listEmailAddress);
|
||||
},
|
||||
findSuggestions: (String query) {
|
||||
if (query.trim().isNotEmpty && _onSuggestionEmailAddress != null) {
|
||||
@@ -204,17 +204,17 @@ class EmailAddressInputBuilder {
|
||||
|
||||
Widget _buildCounter(BuildContext context, int count) {
|
||||
return Padding(
|
||||
padding: EdgeInsets.only(left: 8, top: kIsWeb ? 8 : 0),
|
||||
padding: const EdgeInsets.only(left: 8, top: kIsWeb ? 8 : 0),
|
||||
child: InkWell(
|
||||
onTap: () => _onShowFullListEmailAddressAction?.call(_prefixEmailAddress),
|
||||
child: Chip(
|
||||
labelPadding: EdgeInsets.symmetric(horizontal: 8),
|
||||
labelPadding: const EdgeInsets.symmetric(horizontal: 8),
|
||||
label: Text('+$count', maxLines: 1, overflow: kIsWeb ? null : TextOverflow.ellipsis),
|
||||
labelStyle: TextStyle(color: Colors.black, fontSize: 17, fontWeight: FontWeight.normal),
|
||||
labelStyle: const TextStyle(color: Colors.black, fontSize: 17, fontWeight: FontWeight.normal),
|
||||
backgroundColor: AppColor.colorEmailAddressTag,
|
||||
shape: RoundedRectangleBorder(
|
||||
borderRadius: BorderRadius.circular(10),
|
||||
side: BorderSide(width: 0, color: AppColor.colorEmailAddressTag),
|
||||
side: const BorderSide(width: 0, color: AppColor.colorEmailAddressTag),
|
||||
),
|
||||
),
|
||||
),
|
||||
@@ -222,7 +222,7 @@ class EmailAddressInputBuilder {
|
||||
}
|
||||
|
||||
bool get _isCollapse {
|
||||
return _listEmailAddress.length > 1 && expandMode == ExpandMode.COLLAPSE;
|
||||
return listEmailAddress.length > 1 && expandMode == ExpandMode.COLLAPSE;
|
||||
}
|
||||
|
||||
Widget _buildSuggestionItem(StateSetter setState, BuildContext context, TagsEditorState<EmailAddress> tagEditorState, EmailAddress emailAddress) {
|
||||
@@ -237,22 +237,22 @@ class EmailAddressInputBuilder {
|
||||
border: Border.all(color: AppColor.colorShadowBgContentEmail, width: 1.0)),
|
||||
child: Text(
|
||||
emailAddress.asString().isNotEmpty ? emailAddress.asString()[0].toUpperCase() : '',
|
||||
style: TextStyle(color: Colors.black, fontSize: 16, fontWeight: FontWeight.w600))),
|
||||
style: const TextStyle(color: Colors.black, fontSize: 16, fontWeight: FontWeight.w600))),
|
||||
title: Text(
|
||||
emailAddress.asString(),
|
||||
maxLines: 1,
|
||||
overflow: kIsWeb ? null : TextOverflow.ellipsis,
|
||||
style: TextStyle(color: Colors.black, fontSize: 16, fontWeight: FontWeight.normal)),
|
||||
style: const TextStyle(color: Colors.black, fontSize: 16, fontWeight: FontWeight.normal)),
|
||||
subtitle: emailAddress.displayName.isNotEmpty && emailAddress.emailAddress.isNotEmpty
|
||||
? Text(
|
||||
emailAddress.emailAddress,
|
||||
maxLines: 1,
|
||||
overflow: kIsWeb ? null : TextOverflow.ellipsis,
|
||||
style: TextStyle(color: AppColor.colorHintSearchBar, fontSize: 13, fontWeight: FontWeight.normal))
|
||||
style: const TextStyle(color: AppColor.colorHintSearchBar, fontSize: 13, fontWeight: FontWeight.normal))
|
||||
: null,
|
||||
onTap: () {
|
||||
setState(() => _listEmailAddress.add(emailAddress));
|
||||
_onUpdateListEmailAddressAction?.call(_prefixEmailAddress, _listEmailAddress);
|
||||
setState(() => listEmailAddress.add(emailAddress));
|
||||
_onUpdateListEmailAddressAction?.call(_prefixEmailAddress, listEmailAddress);
|
||||
tagEditorState.selectSuggestion(emailAddress);
|
||||
},
|
||||
);
|
||||
|
||||
@@ -37,11 +37,11 @@ class TopBarComposerWidgetBuilder {
|
||||
|
||||
Widget build() {
|
||||
return Container(
|
||||
key: Key('top_bar_composer_widget'),
|
||||
key: const Key('top_bar_composer_widget'),
|
||||
alignment: Alignment.center,
|
||||
padding: EdgeInsets.zero,
|
||||
child: MediaQuery(
|
||||
data: MediaQueryData(padding: EdgeInsets.zero),
|
||||
data: const MediaQueryData(padding: EdgeInsets.zero),
|
||||
child: Row(
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
mainAxisAlignment: MainAxisAlignment.end,
|
||||
@@ -83,7 +83,7 @@ class TopBarComposerWidgetBuilder {
|
||||
}
|
||||
},
|
||||
child: Padding(
|
||||
padding: EdgeInsets.only(right: kIsWeb ? 16 : 0),
|
||||
padding: const EdgeInsets.only(right: kIsWeb ? 16 : 0),
|
||||
child: SvgPicture.asset(_imagePaths.icShare, fit: BoxFit.fill),
|
||||
),
|
||||
onTapDown: (detail) {
|
||||
@@ -102,7 +102,7 @@ class TopBarComposerWidgetBuilder {
|
||||
),
|
||||
),
|
||||
IconButton(
|
||||
key: Key('button_send_email'),
|
||||
key: const Key('button_send_email'),
|
||||
color: _isEnableEmailSendButton ? AppColor.enableSendEmailButtonColor : AppColor.disableSendEmailButtonColor,
|
||||
icon: SvgPicture.asset(
|
||||
_imagePaths.icComposerSend,
|
||||
@@ -114,7 +114,7 @@ class TopBarComposerWidgetBuilder {
|
||||
}
|
||||
}
|
||||
),
|
||||
SizedBox(width: 8)
|
||||
const SizedBox(width: 8)
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user