edit advanced_search_filter_form remove scroll view
This commit is contained in:
+153
-145
@@ -22,86 +22,82 @@ class AdvancedSearchInputForm extends GetWidget<AdvancedFilterController>
|
|||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
controller.initSearchFilterField(context);
|
controller.initSearchFilterField(context);
|
||||||
return SingleChildScrollView(
|
return Material(
|
||||||
child: Padding(
|
color: Colors.white,
|
||||||
padding: const EdgeInsets.symmetric(horizontal: 28, vertical: 12),
|
child: Column(
|
||||||
child: Material(
|
children: [
|
||||||
color: Colors.white,
|
_buildFilterField(
|
||||||
child: Column(
|
textEditingController: controller.fromFilterInputController,
|
||||||
|
context: context,
|
||||||
|
advancedSearchFilterField: AdvancedSearchFilterField.form,
|
||||||
|
),
|
||||||
|
_buildFilterField(
|
||||||
|
textEditingController: controller.toFilterInputController,
|
||||||
|
context: context,
|
||||||
|
advancedSearchFilterField: AdvancedSearchFilterField.to,
|
||||||
|
),
|
||||||
|
_buildFilterField(
|
||||||
|
textEditingController: controller.subjectFilterInputController,
|
||||||
|
context: context,
|
||||||
|
advancedSearchFilterField: AdvancedSearchFilterField.subject,
|
||||||
|
),
|
||||||
|
_buildFilterField(
|
||||||
|
textEditingController: controller.hasKeyWordFilterInputController,
|
||||||
|
context: context,
|
||||||
|
advancedSearchFilterField: AdvancedSearchFilterField.hasKeyword,
|
||||||
|
),
|
||||||
|
_buildFilterField(
|
||||||
|
textEditingController: controller.notKeyWordFilterInputController,
|
||||||
|
context: context,
|
||||||
|
advancedSearchFilterField: AdvancedSearchFilterField.notKeyword,
|
||||||
|
),
|
||||||
|
_buildFilterField(
|
||||||
|
textEditingController: controller.mailBoxFilterInputController,
|
||||||
|
context: context,
|
||||||
|
advancedSearchFilterField: AdvancedSearchFilterField.mailBox,
|
||||||
|
isSelectFormList: true,
|
||||||
|
),
|
||||||
|
// _buildFilterField(
|
||||||
|
// textEditingController: controller.dateFilterInputController,
|
||||||
|
// context: context,
|
||||||
|
// advancedSearchFilterField: AdvancedSearchFilterField.date,
|
||||||
|
// isSelectFormList: true,
|
||||||
|
// onTap: () {
|
||||||
|
// openContextMenuAction(
|
||||||
|
// context,
|
||||||
|
// _buildEmailReceiveTimeTypeActionTiles(context),
|
||||||
|
// );
|
||||||
|
// },
|
||||||
|
// ),
|
||||||
|
_buildEmailReceiveTimeTypeDropDownButton(),
|
||||||
|
_buildCheckboxHasAttachment(context),
|
||||||
|
Row(
|
||||||
children: [
|
children: [
|
||||||
_buildFilterField(
|
Expanded(
|
||||||
textEditingController: controller.fromFilterInputController,
|
child: _buildButton(
|
||||||
context: context,
|
onAction: () {
|
||||||
advancedSearchFilterField: AdvancedSearchFilterField.form,
|
controller.cleanSearchFilter();
|
||||||
|
},
|
||||||
|
colorButton: AppColor.primaryColor.withOpacity(0.14),
|
||||||
|
colorText: AppColor.primaryColor,
|
||||||
|
text: AppLocalizations.of(context).clearFilter,
|
||||||
|
),
|
||||||
),
|
),
|
||||||
_buildFilterField(
|
const SizedBox(width: 12),
|
||||||
textEditingController: controller.toFilterInputController,
|
Expanded(
|
||||||
context: context,
|
child: _buildButton(
|
||||||
advancedSearchFilterField: AdvancedSearchFilterField.to,
|
onAction: () {
|
||||||
),
|
controller.applyAdvancedSearchFilter(context);
|
||||||
_buildFilterField(
|
popBack();
|
||||||
textEditingController: controller.subjectFilterInputController,
|
},
|
||||||
context: context,
|
colorButton: AppColor.primaryColor,
|
||||||
advancedSearchFilterField: AdvancedSearchFilterField.subject,
|
colorText: AppColor.primaryLightColor,
|
||||||
),
|
text: AppLocalizations.of(context).search,
|
||||||
_buildFilterField(
|
),
|
||||||
textEditingController: controller.hasKeyWordFilterInputController,
|
|
||||||
context: context,
|
|
||||||
advancedSearchFilterField: AdvancedSearchFilterField.hasKeyword,
|
|
||||||
),
|
|
||||||
_buildFilterField(
|
|
||||||
textEditingController: controller.notKeyWordFilterInputController,
|
|
||||||
context: context,
|
|
||||||
advancedSearchFilterField: AdvancedSearchFilterField.notKeyword,
|
|
||||||
),
|
|
||||||
_buildFilterField(
|
|
||||||
textEditingController: controller.mailBoxFilterInputController,
|
|
||||||
context: context,
|
|
||||||
advancedSearchFilterField: AdvancedSearchFilterField.mailBox,
|
|
||||||
isSelectFormList: true,
|
|
||||||
),
|
|
||||||
_buildFilterField(
|
|
||||||
textEditingController: controller.dateFilterInputController,
|
|
||||||
context: context,
|
|
||||||
advancedSearchFilterField: AdvancedSearchFilterField.date,
|
|
||||||
isSelectFormList: true,
|
|
||||||
onTap: () {
|
|
||||||
openContextMenuAction(
|
|
||||||
context,
|
|
||||||
_buildEmailReceiveTimeTypeActionTiles(context),
|
|
||||||
);
|
|
||||||
},
|
|
||||||
) ,
|
|
||||||
_buildCheckboxHasAttachment(context),
|
|
||||||
Row(
|
|
||||||
children: [
|
|
||||||
Expanded(
|
|
||||||
child: _buildButton(
|
|
||||||
onAction: () {
|
|
||||||
controller.cleanSearchFilter();
|
|
||||||
},
|
|
||||||
colorButton: AppColor.primaryColor.withOpacity(0.14),
|
|
||||||
colorText: AppColor.primaryColor,
|
|
||||||
text: AppLocalizations.of(context).clearFilter,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
const SizedBox(width: 12),
|
|
||||||
Expanded(
|
|
||||||
child: _buildButton(
|
|
||||||
onAction: () {
|
|
||||||
controller.applyAdvancedSearchFilter(context);
|
|
||||||
popBack();
|
|
||||||
},
|
|
||||||
colorButton: AppColor.primaryColor,
|
|
||||||
colorText: AppColor.primaryLightColor,
|
|
||||||
text: AppLocalizations.of(context).search,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
],
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -110,15 +106,15 @@ class AdvancedSearchInputForm extends GetWidget<AdvancedFilterController>
|
|||||||
return EmailReceiveTimeType.values
|
return EmailReceiveTimeType.values
|
||||||
.map(
|
.map(
|
||||||
(e) => Material(
|
(e) => Material(
|
||||||
child: PopupMenuItem(
|
child: PopupMenuItem(
|
||||||
child: Text(e.getTitle(context)),
|
child: Text(e.getTitle(context)),
|
||||||
onTap: () {
|
onTap: () {
|
||||||
controller.dateFilterSelectedFormAdvancedSearch.value = e;
|
controller.dateFilterSelectedFormAdvancedSearch.value = e;
|
||||||
controller.dateFilterInputController.text = e.getTitle(context);
|
controller.dateFilterInputController.text = e.getTitle(context);
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
.toList();
|
.toList();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -143,30 +139,31 @@ class AdvancedSearchInputForm extends GetWidget<AdvancedFilterController>
|
|||||||
const Padding(padding: EdgeInsets.all(4)),
|
const Padding(padding: EdgeInsets.all(4)),
|
||||||
responsiveUtils.isMobile(context)
|
responsiveUtils.isMobile(context)
|
||||||
? _buildTextField(
|
? _buildTextField(
|
||||||
isSelectFormList: isSelectFormList,
|
isSelectFormList: isSelectFormList,
|
||||||
onTap: onTap,
|
onTap: onTap,
|
||||||
context: context,
|
context: context,
|
||||||
advancedSearchFilterField: advancedSearchFilterField,
|
advancedSearchFilterField: advancedSearchFilterField,
|
||||||
textEditingController: textEditingController,
|
textEditingController: textEditingController,
|
||||||
) : Expanded(
|
)
|
||||||
child: _buildTextField(
|
: Expanded(
|
||||||
isSelectFormList: isSelectFormList,
|
child: _buildTextField(
|
||||||
onTap: onTap,
|
isSelectFormList: isSelectFormList,
|
||||||
context: context,
|
onTap: onTap,
|
||||||
advancedSearchFilterField: advancedSearchFilterField,
|
context: context,
|
||||||
textEditingController: textEditingController,
|
advancedSearchFilterField: advancedSearchFilterField,
|
||||||
),
|
textEditingController: textEditingController,
|
||||||
)
|
),
|
||||||
|
)
|
||||||
];
|
];
|
||||||
return Padding(
|
return Padding(
|
||||||
padding: const EdgeInsets.symmetric(vertical: 8),
|
padding: const EdgeInsets.symmetric(vertical: 8),
|
||||||
child: responsiveUtils.isMobile(context)
|
child: responsiveUtils.isMobile(context)
|
||||||
? Column(
|
? Column(
|
||||||
mainAxisAlignment: MainAxisAlignment.start,
|
mainAxisAlignment: MainAxisAlignment.start,
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
mainAxisSize: MainAxisSize.min,
|
mainAxisSize: MainAxisSize.min,
|
||||||
children: child,
|
children: child,
|
||||||
)
|
)
|
||||||
: Row(children: child),
|
: Row(children: child),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -183,36 +180,37 @@ class AdvancedSearchInputForm extends GetWidget<AdvancedFilterController>
|
|||||||
readOnly: isSelectFormList,
|
readOnly: isSelectFormList,
|
||||||
onTap: onTap,
|
onTap: onTap,
|
||||||
decoration: InputDecoration(
|
decoration: InputDecoration(
|
||||||
filled: true,
|
filled: true,
|
||||||
fillColor: AppColor.loginTextFieldBackgroundColor,
|
fillColor: AppColor.loginTextFieldBackgroundColor,
|
||||||
contentPadding: const EdgeInsets.only(
|
contentPadding: const EdgeInsets.only(
|
||||||
right: 8,
|
right: 8,
|
||||||
left: 12,
|
left: 12,
|
||||||
|
),
|
||||||
|
border: const OutlineInputBorder(
|
||||||
|
borderRadius: BorderRadius.all(
|
||||||
|
Radius.circular(10),
|
||||||
),
|
),
|
||||||
border: const OutlineInputBorder(
|
),
|
||||||
borderRadius: BorderRadius.all(
|
hintText: advancedSearchFilterField.getHintText(context),
|
||||||
Radius.circular(10),
|
hintStyle: const TextStyle(
|
||||||
),
|
fontSize: 14,
|
||||||
),
|
color: AppColor.colorHintSearchBar,
|
||||||
hintText: advancedSearchFilterField.getHintText(context),
|
),
|
||||||
hintStyle: const TextStyle(
|
suffixIconConstraints:
|
||||||
fontSize: 14,
|
const BoxConstraints(minHeight: 24, minWidth: 24),
|
||||||
color: AppColor.colorHintSearchBar,
|
suffixIcon: isSelectFormList
|
||||||
),
|
? buildIconWeb(
|
||||||
suffixIconConstraints:
|
icon: SvgPicture.asset(
|
||||||
const BoxConstraints(minHeight: 24, minWidth: 24),
|
imagePaths.icDropDown,
|
||||||
suffixIcon: isSelectFormList
|
),
|
||||||
? buildIconWeb(
|
)
|
||||||
icon: SvgPicture.asset(
|
: null,
|
||||||
imagePaths.icDropDown,
|
),
|
||||||
),
|
|
||||||
)
|
|
||||||
: null),
|
|
||||||
);
|
);
|
||||||
|
|
||||||
Widget _buildCheckboxHasAttachment(BuildContext context) {
|
Widget _buildCheckboxHasAttachment(BuildContext context) {
|
||||||
return Obx(
|
return Obx(
|
||||||
()=> CheckboxListTile(
|
() => CheckboxListTile(
|
||||||
contentPadding: EdgeInsets.zero,
|
contentPadding: EdgeInsets.zero,
|
||||||
controlAffinity: ListTileControlAffinity.leading,
|
controlAffinity: ListTileControlAffinity.leading,
|
||||||
value: controller.hasAttachment.value,
|
value: controller.hasAttachment.value,
|
||||||
@@ -238,7 +236,8 @@ class AdvancedSearchInputForm extends GetWidget<AdvancedFilterController>
|
|||||||
child: Container(
|
child: Container(
|
||||||
padding: const EdgeInsets.symmetric(vertical: 16),
|
padding: const EdgeInsets.symmetric(vertical: 16),
|
||||||
alignment: Alignment.center,
|
alignment: Alignment.center,
|
||||||
decoration: BoxDecoration(borderRadius: BorderRadius.circular(10), color: colorButton),
|
decoration: BoxDecoration(
|
||||||
|
borderRadius: BorderRadius.circular(10), color: colorButton),
|
||||||
child: Text(
|
child: Text(
|
||||||
text,
|
text,
|
||||||
style: TextStyle(fontSize: 17, color: colorText),
|
style: TextStyle(fontSize: 17, color: colorText),
|
||||||
@@ -247,28 +246,38 @@ class AdvancedSearchInputForm extends GetWidget<AdvancedFilterController>
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
Widget _buildEmailReceiveTimeTypeDropDownButton(){
|
Widget _buildEmailReceiveTimeTypeDropDownButton() {
|
||||||
return DropdownButtonHideUnderline(
|
return DropdownButtonHideUnderline(
|
||||||
child: DropdownButton2<EmailReceiveTimeType>(
|
child: DropdownButton2<EmailReceiveTimeType>(
|
||||||
isExpanded: true,
|
isExpanded: true,
|
||||||
hint: Row(
|
hint: Row(
|
||||||
children: [
|
children: [
|
||||||
Expanded(child: Text(controller.dateFilterSelectedFormAdvancedSearch.value.name,
|
Expanded(
|
||||||
style: const TextStyle(fontSize: 16, fontWeight: FontWeight.normal, color: Colors.black),
|
child: Text(
|
||||||
|
controller.dateFilterSelectedFormAdvancedSearch.value.name,
|
||||||
|
style: const TextStyle(
|
||||||
|
fontSize: 16,
|
||||||
|
fontWeight: FontWeight.normal,
|
||||||
|
color: Colors.black),
|
||||||
maxLines: 1,
|
maxLines: 1,
|
||||||
overflow: BuildUtils.isWeb ? null : TextOverflow.ellipsis,
|
overflow: BuildUtils.isWeb ? null : TextOverflow.ellipsis,
|
||||||
)),
|
)),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
items: EmailReceiveTimeType.values.map((item) => DropdownMenuItem<EmailReceiveTimeType>(
|
items: EmailReceiveTimeType.values
|
||||||
value: item,
|
.map((item) => DropdownMenuItem<EmailReceiveTimeType>(
|
||||||
child: Text(
|
value: item,
|
||||||
item.name,
|
child: Text(
|
||||||
style: const TextStyle(fontSize: 16, fontWeight: FontWeight.normal, color: Colors.black),
|
item.name,
|
||||||
maxLines: 1,
|
style: const TextStyle(
|
||||||
overflow: BuildUtils.isWeb ? null : TextOverflow.ellipsis,
|
fontSize: 16,
|
||||||
),
|
fontWeight: FontWeight.normal,
|
||||||
)).toList(),
|
color: Colors.black),
|
||||||
|
maxLines: 1,
|
||||||
|
overflow: BuildUtils.isWeb ? null : TextOverflow.ellipsis,
|
||||||
|
),
|
||||||
|
))
|
||||||
|
.toList(),
|
||||||
value: controller.dateFilterSelectedFormAdvancedSearch.value,
|
value: controller.dateFilterSelectedFormAdvancedSearch.value,
|
||||||
onChanged: (item) {
|
onChanged: (item) {
|
||||||
controller.dateFilterSelectedFormAdvancedSearch.value = item!;
|
controller.dateFilterSelectedFormAdvancedSearch.value = item!;
|
||||||
@@ -277,16 +286,15 @@ class AdvancedSearchInputForm extends GetWidget<AdvancedFilterController>
|
|||||||
buttonPadding: const EdgeInsets.symmetric(horizontal: 12),
|
buttonPadding: const EdgeInsets.symmetric(horizontal: 12),
|
||||||
buttonDecoration: BoxDecoration(
|
buttonDecoration: BoxDecoration(
|
||||||
borderRadius: BorderRadius.circular(10),
|
borderRadius: BorderRadius.circular(10),
|
||||||
border: Border.all(color: AppColor.colorInputBorderCreateMailbox, width: 0.5),
|
border: Border.all(
|
||||||
|
color: AppColor.colorInputBorderCreateMailbox, width: 0.5),
|
||||||
color: AppColor.colorInputBackgroundCreateMailbox),
|
color: AppColor.colorInputBackgroundCreateMailbox),
|
||||||
itemHeight: 44,
|
itemHeight: 44,
|
||||||
buttonHeight: 44,
|
buttonHeight: 44,
|
||||||
selectedItemHighlightColor: Colors.black12,
|
selectedItemHighlightColor: Colors.black12,
|
||||||
itemPadding: const EdgeInsets.symmetric(horizontal: 12),
|
itemPadding: const EdgeInsets.symmetric(horizontal: 12),
|
||||||
dropdownMaxHeight: 200,
|
dropdownMaxHeight: 200,
|
||||||
dropdownDecoration: BoxDecoration(
|
dropdownDecoration: BoxDecoration(borderRadius: BorderRadius.circular(10), color: Colors.white),
|
||||||
borderRadius: BorderRadius.circular(10),
|
|
||||||
color: Colors.white),
|
|
||||||
dropdownElevation: 4,
|
dropdownElevation: 4,
|
||||||
scrollbarRadius: const Radius.circular(40),
|
scrollbarRadius: const Radius.circular(40),
|
||||||
scrollbarThickness: 6,
|
scrollbarThickness: 6,
|
||||||
|
|||||||
Reference in New Issue
Block a user