TF-2084 Add widget for multi actions
(cherry picked from commit ac475711c15f7668542343d2fec9185c671b43dd)
This commit is contained in:
@@ -0,0 +1,80 @@
|
||||
import 'package:core/presentation/resources/image_paths.dart';
|
||||
import 'package:core/presentation/utils/responsive_utils.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:get/get.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/rule_filter_action_arguments.dart';
|
||||
import 'package:tmail_ui_user/features/rules_filter_creator/presentation/widgets/rule_filter_action_widget.dart';
|
||||
|
||||
class RuleFilterActionListWidget extends StatelessWidget {
|
||||
final ResponsiveUtils responsiveUtils;
|
||||
final List<RuleFilterActionArguments> actionList;
|
||||
final Function(EmailRuleFilterAction?, int)? onActionChangeMobile;
|
||||
final Function(EmailRuleFilterAction?, int)? onActionChanged;
|
||||
final TextEditingController? forwardEmailEditingController;
|
||||
final FocusNode? forwardEmailFocusNode;
|
||||
final Function(int)? tapActionDetailedCallback;
|
||||
final Function(int)? tapRemoveCallback;
|
||||
final ImagePaths? imagePaths;
|
||||
final Function(String?, int)? onChangeForwardEmail;
|
||||
final String? errorForwardEmail;
|
||||
final String? errorMailboxSelected;
|
||||
|
||||
const RuleFilterActionListWidget({
|
||||
Key? key,
|
||||
required this.responsiveUtils,
|
||||
required this.actionList,
|
||||
this.onActionChangeMobile,
|
||||
this.onActionChanged,
|
||||
this.forwardEmailEditingController,
|
||||
this.forwardEmailFocusNode,
|
||||
this.tapActionDetailedCallback,
|
||||
this.tapRemoveCallback,
|
||||
this.imagePaths,
|
||||
this.onChangeForwardEmail,
|
||||
this.errorForwardEmail,
|
||||
this.errorMailboxSelected,
|
||||
}) : super(key: key);
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Obx(() {
|
||||
return ListView.separated(
|
||||
shrinkWrap: true,
|
||||
itemCount: actionList.length,
|
||||
separatorBuilder: (context, index) {
|
||||
return const SizedBox(height: 12,);
|
||||
},
|
||||
itemBuilder: (context, index) {
|
||||
final RuleFilterActionArguments currentAction = actionList[index];
|
||||
String? errorValue;
|
||||
if (currentAction is ForwardActionArguments) {
|
||||
errorValue = errorForwardEmail;
|
||||
} else {
|
||||
errorValue = errorMailboxSelected;
|
||||
}
|
||||
return RuleFilterActionWidget(
|
||||
responsiveUtils: responsiveUtils,
|
||||
mailboxSelected: currentAction is MoveMessageActionArguments ? currentAction.mailbox : null,
|
||||
errorValue: errorValue,
|
||||
onActionChangeMobile: () {
|
||||
onActionChangeMobile!(currentAction.action, index);
|
||||
},
|
||||
onActionChanged: (newAction) {
|
||||
if (newAction != currentAction.action) {
|
||||
onActionChanged!(newAction, index);
|
||||
}
|
||||
},
|
||||
forwardEmailEditingController: currentAction.action == EmailRuleFilterAction.forwardTo ? forwardEmailEditingController : null,
|
||||
forwardEmailFocusNode: currentAction.action == EmailRuleFilterAction.forwardTo ? forwardEmailFocusNode : null,
|
||||
onChangeForwardEmail: (value) => onChangeForwardEmail!(value, index),
|
||||
actionSelected: currentAction.action,
|
||||
tapActionDetailedCallback: () => tapActionDetailedCallback!(index),
|
||||
tapRemoveCallback: () => tapRemoveCallback!(index),
|
||||
imagePaths: imagePaths,
|
||||
);
|
||||
},
|
||||
);
|
||||
});
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user