TF-894 Enable CreateButton every time and only show error when not valid condition
This commit is contained in:
+52
-36
@@ -1,7 +1,5 @@
|
|||||||
|
|
||||||
import 'package:core/presentation/state/failure.dart';
|
import 'package:core/core.dart';
|
||||||
import 'package:core/presentation/state/success.dart';
|
|
||||||
import 'package:core/utils/app_logger.dart';
|
|
||||||
import 'package:dartz/dartz.dart';
|
import 'package:dartz/dartz.dart';
|
||||||
import 'package:flutter/cupertino.dart';
|
import 'package:flutter/cupertino.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
@@ -23,30 +21,34 @@ import 'package:tmail_ui_user/features/mailbox_creator/presentation/extensions/v
|
|||||||
import 'package:tmail_ui_user/features/rules_filter_creator/presentation/model/creator_action_type.dart';
|
import 'package:tmail_ui_user/features/rules_filter_creator/presentation/model/creator_action_type.dart';
|
||||||
import 'package:tmail_ui_user/features/rules_filter_creator/presentation/model/email_rule_filter_action.dart';
|
import 'package:tmail_ui_user/features/rules_filter_creator/presentation/model/email_rule_filter_action.dart';
|
||||||
import 'package:tmail_ui_user/features/rules_filter_creator/presentation/model/rules_filter_creator_arguments.dart';
|
import 'package:tmail_ui_user/features/rules_filter_creator/presentation/model/rules_filter_creator_arguments.dart';
|
||||||
|
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
||||||
import 'package:tmail_ui_user/main/routes/app_routes.dart';
|
import 'package:tmail_ui_user/main/routes/app_routes.dart';
|
||||||
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
|
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
|
||||||
|
|
||||||
class RulesFilterCreatorController extends BaseMailboxController {
|
class RulesFilterCreatorController extends BaseMailboxController {
|
||||||
|
|
||||||
|
final _appToast = Get.find<AppToast>();
|
||||||
|
|
||||||
final VerifyNameInteractor _verifyNameInteractor;
|
final VerifyNameInteractor _verifyNameInteractor;
|
||||||
final GetAllMailboxInteractor _getAllMailboxInteractor;
|
final GetAllMailboxInteractor _getAllMailboxInteractor;
|
||||||
|
|
||||||
final actionType = CreatorActionType.create.obs;
|
final actionType = CreatorActionType.create.obs;
|
||||||
final errorRuleName = Rxn<String>();
|
final errorRuleName = Rxn<String>();
|
||||||
final errorConditionValue = Rxn<String>();
|
final errorRuleConditionValue = Rxn<String>();
|
||||||
|
final errorRuleActionValue = Rxn<String>();
|
||||||
final ruleConditionFieldSelected = Rxn<rule_condition.Field>();
|
final ruleConditionFieldSelected = Rxn<rule_condition.Field>();
|
||||||
final ruleConditionComparatorSelected = Rxn<rule_condition.Comparator>();
|
final ruleConditionComparatorSelected = Rxn<rule_condition.Comparator>();
|
||||||
final emailRuleFilterActionSelected = Rxn<EmailRuleFilterAction>();
|
final emailRuleFilterActionSelected = Rxn<EmailRuleFilterAction>();
|
||||||
final mailboxSelected = Rxn<PresentationMailbox>();
|
final mailboxSelected = Rxn<PresentationMailbox>();
|
||||||
final isCreateRuleFilterValid = RxBool(false);
|
|
||||||
|
|
||||||
final inputRuleNameController = TextEditingController();
|
final inputRuleNameController = TextEditingController();
|
||||||
final inputConditionValueController = TextEditingController();
|
final inputConditionValueController = TextEditingController();
|
||||||
final inputRuleNameFocusNode = FocusNode();
|
final inputRuleNameFocusNode = FocusNode();
|
||||||
|
final inputRuleConditionFocusNode = FocusNode();
|
||||||
|
|
||||||
AccountId? _accountId;
|
AccountId? _accountId;
|
||||||
String? _newRuleName;
|
String? _newRuleName;
|
||||||
String? _newConditionValue;
|
String? _newRuleConditionValue;
|
||||||
TMailRule? _currentTMailRule;
|
TMailRule? _currentTMailRule;
|
||||||
|
|
||||||
RulesFilterCreatorController(
|
RulesFilterCreatorController(
|
||||||
@@ -65,6 +67,7 @@ class RulesFilterCreatorController extends BaseMailboxController {
|
|||||||
@override
|
@override
|
||||||
void onClose() {
|
void onClose() {
|
||||||
inputRuleNameFocusNode.dispose();
|
inputRuleNameFocusNode.dispose();
|
||||||
|
inputRuleConditionFocusNode.dispose();
|
||||||
inputRuleNameController.dispose();
|
inputRuleNameController.dispose();
|
||||||
inputConditionValueController.dispose();
|
inputConditionValueController.dispose();
|
||||||
super.onClose();
|
super.onClose();
|
||||||
@@ -77,16 +80,11 @@ class RulesFilterCreatorController extends BaseMailboxController {
|
|||||||
void onData(Either<Failure, Success> newState) {
|
void onData(Either<Failure, Success> newState) {
|
||||||
super.onData(newState);
|
super.onData(newState);
|
||||||
newState.fold(
|
newState.fold(
|
||||||
(failure) {
|
(failure) => null,
|
||||||
if (failure is GetAllMailboxFailure) {
|
|
||||||
_updateStateCreatorButton();
|
|
||||||
}
|
|
||||||
},
|
|
||||||
(success) async {
|
(success) async {
|
||||||
if (success is GetAllMailboxSuccess) {
|
if (success is GetAllMailboxSuccess) {
|
||||||
await buildTree(success.mailboxList);
|
await buildTree(success.mailboxList);
|
||||||
_setUpMailboxSelected();
|
_setUpMailboxSelected();
|
||||||
_updateStateCreatorButton();
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -115,8 +113,8 @@ class RulesFilterCreatorController extends BaseMailboxController {
|
|||||||
ruleConditionFieldSelected.value = _currentTMailRule!.condition.field;
|
ruleConditionFieldSelected.value = _currentTMailRule!.condition.field;
|
||||||
ruleConditionComparatorSelected.value = _currentTMailRule!.condition.comparator;
|
ruleConditionComparatorSelected.value = _currentTMailRule!.condition.comparator;
|
||||||
emailRuleFilterActionSelected.value = EmailRuleFilterAction.moveMessage;
|
emailRuleFilterActionSelected.value = EmailRuleFilterAction.moveMessage;
|
||||||
_newConditionValue = _currentTMailRule!.condition.value;
|
_newRuleConditionValue = _currentTMailRule!.condition.value;
|
||||||
_setValueInputField(inputConditionValueController, _newConditionValue ?? '');
|
_setValueInputField(inputConditionValueController, _newRuleConditionValue ?? '');
|
||||||
_newRuleName = _currentTMailRule!.name;
|
_newRuleName = _currentTMailRule!.name;
|
||||||
_setValueInputField(inputRuleNameController, _newRuleName ?? '');
|
_setValueInputField(inputRuleNameController, _newRuleName ?? '');
|
||||||
_getAllMailboxAction();
|
_getAllMailboxAction();
|
||||||
@@ -124,7 +122,6 @@ class RulesFilterCreatorController extends BaseMailboxController {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
inputRuleNameFocusNode.requestFocus();
|
inputRuleNameFocusNode.requestFocus();
|
||||||
_updateStateCreatorButton();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void _setValueInputField(TextEditingController controller, String value) {
|
void _setValueInputField(TextEditingController controller, String value) {
|
||||||
@@ -150,13 +147,11 @@ class RulesFilterCreatorController extends BaseMailboxController {
|
|||||||
void updateRuleName(BuildContext context, String? value) {
|
void updateRuleName(BuildContext context, String? value) {
|
||||||
_newRuleName = value;
|
_newRuleName = value;
|
||||||
errorRuleName.value = _getErrorStringByInputValue(context, _newRuleName);
|
errorRuleName.value = _getErrorStringByInputValue(context, _newRuleName);
|
||||||
_updateStateCreatorButton();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void updateConditionValue(BuildContext context, String? value) {
|
void updateConditionValue(BuildContext context, String? value) {
|
||||||
_newConditionValue = value;
|
_newRuleConditionValue = value;
|
||||||
errorConditionValue.value = _getErrorStringByInputValue(context, _newConditionValue);
|
errorRuleConditionValue.value = _getErrorStringByInputValue(context, _newRuleConditionValue);
|
||||||
_updateStateCreatorButton();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
String? _getErrorStringByInputValue(BuildContext context, String? inputValue) {
|
String? _getErrorStringByInputValue(BuildContext context, String? inputValue) {
|
||||||
@@ -174,20 +169,17 @@ class RulesFilterCreatorController extends BaseMailboxController {
|
|||||||
|
|
||||||
void selectRuleConditionField(rule_condition.Field? newField) {
|
void selectRuleConditionField(rule_condition.Field? newField) {
|
||||||
ruleConditionFieldSelected.value = newField;
|
ruleConditionFieldSelected.value = newField;
|
||||||
_updateStateCreatorButton();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void selectRuleConditionComparator(rule_condition.Comparator? newComparator) {
|
void selectRuleConditionComparator(rule_condition.Comparator? newComparator) {
|
||||||
ruleConditionComparatorSelected.value = newComparator;
|
ruleConditionComparatorSelected.value = newComparator;
|
||||||
_updateStateCreatorButton();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void selectEmailRuleFilterAction(EmailRuleFilterAction? newAction) {
|
void selectEmailRuleFilterAction(EmailRuleFilterAction? newAction) {
|
||||||
emailRuleFilterActionSelected.value = newAction;
|
emailRuleFilterActionSelected.value = newAction;
|
||||||
_updateStateCreatorButton();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void selectMailbox() async {
|
void selectMailbox(BuildContext context) async {
|
||||||
final destinationMailbox = await push(
|
final destinationMailbox = await push(
|
||||||
AppRoutes.DESTINATION_PICKER,
|
AppRoutes.DESTINATION_PICKER,
|
||||||
arguments: DestinationPickerArguments(
|
arguments: DestinationPickerArguments(
|
||||||
@@ -196,19 +188,12 @@ class RulesFilterCreatorController extends BaseMailboxController {
|
|||||||
|
|
||||||
if (destinationMailbox is PresentationMailbox) {
|
if (destinationMailbox is PresentationMailbox) {
|
||||||
mailboxSelected.value = destinationMailbox;
|
mailboxSelected.value = destinationMailbox;
|
||||||
_updateStateCreatorButton();
|
errorRuleActionValue.value = _getErrorStringByInputValue(
|
||||||
|
context,
|
||||||
|
mailboxSelected.value?.name?.name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void _updateStateCreatorButton() {
|
|
||||||
isCreateRuleFilterValid.value = _newRuleName?.trim().isNotEmpty == true &&
|
|
||||||
_newConditionValue?.trim().isNotEmpty == true &&
|
|
||||||
mailboxSelected.value != null &&
|
|
||||||
ruleConditionFieldSelected.value != null &&
|
|
||||||
emailRuleFilterActionSelected.value != null &&
|
|
||||||
ruleConditionComparatorSelected.value != null;
|
|
||||||
}
|
|
||||||
|
|
||||||
void createNewRuleFilter(BuildContext context) async {
|
void createNewRuleFilter(BuildContext context) async {
|
||||||
FocusScope.of(context).unfocus();
|
FocusScope.of(context).unfocus();
|
||||||
|
|
||||||
@@ -216,13 +201,44 @@ class RulesFilterCreatorController extends BaseMailboxController {
|
|||||||
if (errorName?.isNotEmpty == true) {
|
if (errorName?.isNotEmpty == true) {
|
||||||
log('RulesFilterCreatorController::createNewRuleFilter(): errorName: $errorName');
|
log('RulesFilterCreatorController::createNewRuleFilter(): errorName: $errorName');
|
||||||
errorRuleName.value = errorName;
|
errorRuleName.value = errorName;
|
||||||
|
inputRuleNameFocusNode.requestFocus();
|
||||||
|
_appToast.showToastWithIcon(
|
||||||
|
currentOverlayContext!,
|
||||||
|
textColor: AppColor.toastErrorBackgroundColor,
|
||||||
|
message: AppLocalizations.of(currentContext!).this_field_cannot_be_blank);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final errorCondition = _getErrorStringByInputValue(context, _newConditionValue);
|
final errorCondition = _getErrorStringByInputValue(context, _newRuleConditionValue);
|
||||||
if (errorCondition?.isNotEmpty == true) {
|
if (errorCondition?.isNotEmpty == true) {
|
||||||
log('RulesFilterCreatorController::createNewRuleFilter(): errorCondition: $errorCondition');
|
log('RulesFilterCreatorController::createNewRuleFilter(): errorCondition: $errorCondition');
|
||||||
errorConditionValue.value = errorName;
|
errorRuleConditionValue.value = errorCondition;
|
||||||
|
inputRuleConditionFocusNode.requestFocus();
|
||||||
|
_appToast.showToastWithIcon(
|
||||||
|
currentOverlayContext!,
|
||||||
|
textColor: AppColor.toastErrorBackgroundColor,
|
||||||
|
message: AppLocalizations.of(currentContext!).this_field_cannot_be_blank);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
final errorAction = _getErrorStringByInputValue(context, mailboxSelected.value?.name?.name);
|
||||||
|
if (errorAction?.isNotEmpty == true) {
|
||||||
|
log('RulesFilterCreatorController::createNewRuleFilter(): errorAction: $errorAction');
|
||||||
|
errorRuleActionValue.value = errorAction;
|
||||||
|
_appToast.showToastWithIcon(
|
||||||
|
currentOverlayContext!,
|
||||||
|
textColor: AppColor.toastErrorBackgroundColor,
|
||||||
|
message: AppLocalizations.of(currentContext!).this_field_cannot_be_blank);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ruleConditionFieldSelected.value == null ||
|
||||||
|
ruleConditionComparatorSelected.value == null ||
|
||||||
|
emailRuleFilterActionSelected.value == null) {
|
||||||
|
_appToast.showToastWithIcon(
|
||||||
|
currentOverlayContext!,
|
||||||
|
textColor: AppColor.toastErrorBackgroundColor,
|
||||||
|
message: AppLocalizations.of(currentContext!).toastErrorMessageWhenCreateNewRule);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -237,7 +253,7 @@ class RulesFilterCreatorController extends BaseMailboxController {
|
|||||||
condition: rule_condition.RuleCondition(
|
condition: rule_condition.RuleCondition(
|
||||||
field: ruleConditionFieldSelected.value!,
|
field: ruleConditionFieldSelected.value!,
|
||||||
comparator: ruleConditionComparatorSelected.value!,
|
comparator: ruleConditionComparatorSelected.value!,
|
||||||
value: _newConditionValue!
|
value: _newRuleConditionValue!
|
||||||
));
|
));
|
||||||
|
|
||||||
log('RulesFilterCreatorController::newTMailRule(): $newTMailRule');
|
log('RulesFilterCreatorController::newTMailRule(): $newTMailRule');
|
||||||
|
|||||||
@@ -161,8 +161,9 @@ class RuleFilterCreatorView extends GetWidget<RulesFilterCreatorController> {
|
|||||||
supportSelectionIcon: true))),
|
supportSelectionIcon: true))),
|
||||||
Expanded(child: Obx(() => RulesFilterInputField(
|
Expanded(child: Obx(() => RulesFilterInputField(
|
||||||
hintText: AppLocalizations.of(context).conditionValueHintTextInput,
|
hintText: AppLocalizations.of(context).conditionValueHintTextInput,
|
||||||
errorText: controller.errorConditionValue.value,
|
errorText: controller.errorRuleConditionValue.value,
|
||||||
editingController: controller.inputConditionValueController,
|
editingController: controller.inputConditionValueController,
|
||||||
|
focusNode: controller.inputRuleConditionFocusNode,
|
||||||
onChangeAction: (value) =>
|
onChangeAction: (value) =>
|
||||||
controller.updateConditionValue(context, value))))
|
controller.updateConditionValue(context, value))))
|
||||||
]
|
]
|
||||||
@@ -205,7 +206,8 @@ class RuleFilterCreatorView extends GetWidget<RulesFilterCreatorController> {
|
|||||||
Expanded(child: Obx(() =>
|
Expanded(child: Obx(() =>
|
||||||
RuleFilterButtonField<PresentationMailbox>(
|
RuleFilterButtonField<PresentationMailbox>(
|
||||||
value: controller.mailboxSelected.value,
|
value: controller.mailboxSelected.value,
|
||||||
tapActionCallback: (value) => controller.selectMailbox()))),
|
borderColor: _getBorderColorMailboxSelected(),
|
||||||
|
tapActionCallback: (value) => controller.selectMailbox(context)))),
|
||||||
])
|
])
|
||||||
),
|
),
|
||||||
]
|
]
|
||||||
@@ -235,16 +237,9 @@ class RuleFilterCreatorView extends GetWidget<RulesFilterCreatorController> {
|
|||||||
controller.actionType.value.getActionName(context),
|
controller.actionType.value.getActionName(context),
|
||||||
width: 128,
|
width: 128,
|
||||||
height: 44,
|
height: 44,
|
||||||
backgroundColor: AppColor.colorTextButton
|
backgroundColor: AppColor.colorTextButton,
|
||||||
.withOpacity(controller.isCreateRuleFilterValid.value
|
|
||||||
? 1.0
|
|
||||||
: 0.4),
|
|
||||||
radius: 10,
|
radius: 10,
|
||||||
onTap: () {
|
onTap: () => controller.createNewRuleFilter(context))),
|
||||||
if (controller.isCreateRuleFilterValid.value) {
|
|
||||||
controller.createNewRuleFilter(context);
|
|
||||||
}
|
|
||||||
})),
|
|
||||||
]
|
]
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
@@ -322,8 +317,9 @@ class RuleFilterCreatorView extends GetWidget<RulesFilterCreatorController> {
|
|||||||
supportSelectionIcon: true))),
|
supportSelectionIcon: true))),
|
||||||
Expanded(child: Obx(() => RulesFilterInputField(
|
Expanded(child: Obx(() => RulesFilterInputField(
|
||||||
hintText: AppLocalizations.of(context).conditionValueHintTextInput,
|
hintText: AppLocalizations.of(context).conditionValueHintTextInput,
|
||||||
errorText: controller.errorConditionValue.value,
|
errorText: controller.errorRuleConditionValue.value,
|
||||||
editingController: controller.inputConditionValueController,
|
editingController: controller.inputConditionValueController,
|
||||||
|
focusNode: controller.inputRuleConditionFocusNode,
|
||||||
onChangeAction: (value) =>
|
onChangeAction: (value) =>
|
||||||
controller.updateConditionValue(context, value))))
|
controller.updateConditionValue(context, value))))
|
||||||
]
|
]
|
||||||
@@ -367,7 +363,8 @@ class RuleFilterCreatorView extends GetWidget<RulesFilterCreatorController> {
|
|||||||
Expanded(child: Obx(() =>
|
Expanded(child: Obx(() =>
|
||||||
RuleFilterButtonField<PresentationMailbox>(
|
RuleFilterButtonField<PresentationMailbox>(
|
||||||
value: controller.mailboxSelected.value,
|
value: controller.mailboxSelected.value,
|
||||||
tapActionCallback: (value) => controller.selectMailbox()))),
|
borderColor: _getBorderColorMailboxSelected(),
|
||||||
|
tapActionCallback: (value) => controller.selectMailbox(context)))),
|
||||||
])
|
])
|
||||||
),
|
),
|
||||||
]
|
]
|
||||||
@@ -396,16 +393,9 @@ class RuleFilterCreatorView extends GetWidget<RulesFilterCreatorController> {
|
|||||||
controller.actionType.value.getActionName(context),
|
controller.actionType.value.getActionName(context),
|
||||||
width: 128,
|
width: 128,
|
||||||
height: 44,
|
height: 44,
|
||||||
backgroundColor: AppColor.colorTextButton
|
backgroundColor: AppColor.colorTextButton,
|
||||||
.withOpacity(controller.isCreateRuleFilterValid.value
|
|
||||||
? 1.0
|
|
||||||
: 0.4),
|
|
||||||
radius: 10,
|
radius: 10,
|
||||||
onTap: () {
|
onTap: () => controller.createNewRuleFilter(context)))),
|
||||||
if (controller.isCreateRuleFilterValid.value) {
|
|
||||||
controller.createNewRuleFilter(context);
|
|
||||||
}
|
|
||||||
}))),
|
|
||||||
]
|
]
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
@@ -498,8 +488,9 @@ class RuleFilterCreatorView extends GetWidget<RulesFilterCreatorController> {
|
|||||||
),
|
),
|
||||||
Obx(() => RulesFilterInputField(
|
Obx(() => RulesFilterInputField(
|
||||||
hintText: AppLocalizations.of(context).conditionValueHintTextInput,
|
hintText: AppLocalizations.of(context).conditionValueHintTextInput,
|
||||||
errorText: controller.errorConditionValue.value,
|
errorText: controller.errorRuleConditionValue.value,
|
||||||
editingController: controller.inputConditionValueController,
|
editingController: controller.inputConditionValueController,
|
||||||
|
focusNode: controller.inputRuleConditionFocusNode,
|
||||||
onChangeAction: (value) =>
|
onChangeAction: (value) =>
|
||||||
controller.updateConditionValue(context, value)))
|
controller.updateConditionValue(context, value)))
|
||||||
]
|
]
|
||||||
@@ -552,7 +543,8 @@ class RuleFilterCreatorView extends GetWidget<RulesFilterCreatorController> {
|
|||||||
),
|
),
|
||||||
Obx(() => RuleFilterButtonField<PresentationMailbox>(
|
Obx(() => RuleFilterButtonField<PresentationMailbox>(
|
||||||
value: controller.mailboxSelected.value,
|
value: controller.mailboxSelected.value,
|
||||||
tapActionCallback: (value) => controller.selectMailbox()))
|
borderColor: _getBorderColorMailboxSelected(),
|
||||||
|
tapActionCallback: (value) => controller.selectMailbox(context)))
|
||||||
])
|
])
|
||||||
),
|
),
|
||||||
]
|
]
|
||||||
@@ -581,16 +573,9 @@ class RuleFilterCreatorView extends GetWidget<RulesFilterCreatorController> {
|
|||||||
controller.actionType.value.getActionName(context),
|
controller.actionType.value.getActionName(context),
|
||||||
width: 128,
|
width: 128,
|
||||||
height: 44,
|
height: 44,
|
||||||
backgroundColor: AppColor.colorTextButton
|
backgroundColor: AppColor.colorTextButton,
|
||||||
.withOpacity(controller.isCreateRuleFilterValid.value
|
|
||||||
? 1.0
|
|
||||||
: 0.4),
|
|
||||||
radius: 10,
|
radius: 10,
|
||||||
onTap: () {
|
onTap: () => controller.createNewRuleFilter(context)))),
|
||||||
if (controller.isCreateRuleFilterValid.value) {
|
|
||||||
controller.createNewRuleFilter(context);
|
|
||||||
}
|
|
||||||
}))),
|
|
||||||
]
|
]
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
@@ -704,4 +689,12 @@ class RuleFilterCreatorView extends GetWidget<RulesFilterCreatorController> {
|
|||||||
}))
|
}))
|
||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Color _getBorderColorMailboxSelected() {
|
||||||
|
if (controller.errorRuleActionValue.value?.isNotEmpty == true) {
|
||||||
|
return AppColor.colorInputBorderErrorVerifyName;
|
||||||
|
} else {
|
||||||
|
return AppColor.colorInputBorderCreateMailbox;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
+4
-2
@@ -16,11 +16,13 @@ class RuleFilterButtonField<T> extends StatelessWidget {
|
|||||||
|
|
||||||
final T? value;
|
final T? value;
|
||||||
final OnTapActionCallback? tapActionCallback;
|
final OnTapActionCallback? tapActionCallback;
|
||||||
|
final Color? borderColor;
|
||||||
|
|
||||||
const RuleFilterButtonField({
|
const RuleFilterButtonField({
|
||||||
super.key,
|
super.key,
|
||||||
this.value,
|
this.value,
|
||||||
this.tapActionCallback
|
this.tapActionCallback,
|
||||||
|
this.borderColor,
|
||||||
});
|
});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@@ -34,7 +36,7 @@ class RuleFilterButtonField<T> extends StatelessWidget {
|
|||||||
decoration: BoxDecoration(
|
decoration: BoxDecoration(
|
||||||
borderRadius: BorderRadius.circular(10),
|
borderRadius: BorderRadius.circular(10),
|
||||||
border: Border.all(
|
border: Border.all(
|
||||||
color: AppColor.colorInputBorderCreateMailbox,
|
color: borderColor ?? AppColor.colorInputBorderCreateMailbox,
|
||||||
width: 1),
|
width: 1),
|
||||||
color: Colors.white),
|
color: Colors.white),
|
||||||
padding: const EdgeInsets.only(left: 12, right: 10),
|
padding: const EdgeInsets.only(left: 12, right: 10),
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"@@last_modified": "2022-09-05T09:25:59.780036",
|
"@@last_modified": "2022-09-08T14:02:20.481140",
|
||||||
"initializing_data": "Initializing data...",
|
"initializing_data": "Initializing data...",
|
||||||
"@initializing_data": {
|
"@initializing_data": {
|
||||||
"type": "text",
|
"type": "text",
|
||||||
@@ -2129,5 +2129,11 @@
|
|||||||
"type": "text",
|
"type": "text",
|
||||||
"placeholders_order": [],
|
"placeholders_order": [],
|
||||||
"placeholders": {}
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"toastErrorMessageWhenCreateNewRule": "You have not filled in the information completely.",
|
||||||
|
"@toastErrorMessageWhenCreateNewRule": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2198,4 +2198,10 @@ class AppLocalizations {
|
|||||||
'The rule has been removed.',
|
'The rule has been removed.',
|
||||||
name: 'toastMessageDeleteEmailRuleSuccessfully');
|
name: 'toastMessageDeleteEmailRuleSuccessfully');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
String get toastErrorMessageWhenCreateNewRule {
|
||||||
|
return Intl.message(
|
||||||
|
'You have not filled in the information completely.',
|
||||||
|
name: 'toastErrorMessageWhenCreateNewRule');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user