I have a list of product List<Product>
items value are coming in string variable and there is a search from where we can selected multiple parameters like color, shape, size etc. so i want to filter list on various parameters.
DiamondSearchParameters
is being used in form, many parameters are multi selection and i want to filter list according to selected parameters. Consider list List<Product>
contains api data with string values and in DiamondSearchParameters
all are static data for color, shape and etc.
<code>class DiamondSearchParameters extends Equatable {
late final Set<Shape>? shapes;
late final SplayTreeSet<CaratRangeItem>? caratRangeItems;
late final DiamondColor? color;
late final Set<SearchDiamondFormOption>? colorVariants;
late final Set<SearchDiamondFormOption>? fancyIntensity;
late final Set<SearchDiamondFormOption>? fancyOvertone;
late final Set<SearchDiamondFormOption>? clarity;
late final DiamondMake? diamondMake;
}
</code>
<code>class DiamondSearchParameters extends Equatable {
late final Set<Shape>? shapes;
late final SplayTreeSet<CaratRangeItem>? caratRangeItems;
late final DiamondColor? color;
late final Set<SearchDiamondFormOption>? colorVariants;
late final Set<SearchDiamondFormOption>? fancyIntensity;
late final Set<SearchDiamondFormOption>? fancyOvertone;
late final Set<SearchDiamondFormOption>? clarity;
late final DiamondMake? diamondMake;
}
</code>
class DiamondSearchParameters extends Equatable {
late final Set<Shape>? shapes;
late final SplayTreeSet<CaratRangeItem>? caratRangeItems;
late final DiamondColor? color;
late final Set<SearchDiamondFormOption>? colorVariants;
late final Set<SearchDiamondFormOption>? fancyIntensity;
late final Set<SearchDiamondFormOption>? fancyOvertone;
late final Set<SearchDiamondFormOption>? clarity;
late final DiamondMake? diamondMake;
}
Trying to sort data in this way, want better approach
<code>_getSearchCount(
DiamondSearchParameters param,
) {
final List<Product> sortedDiamondsList = product!;
final List<Product> temp = [];
sortedDiamondsList.forEach((element) {
param.shapes?.forEach((shapes) {
if(element.shapeName == shapes.toString()){
debugPrint('shape---${element.shapeName}');
temp.add(element);
}
});
if(param.color == element.color){
debugPrint('color---${element.color}');
}
param.colorVariants?.forEach((colorVariants) {
debugPrint('colorVariants---${element.color}');
});
});
</code>
<code>_getSearchCount(
DiamondSearchParameters param,
) {
final List<Product> sortedDiamondsList = product!;
final List<Product> temp = [];
sortedDiamondsList.forEach((element) {
param.shapes?.forEach((shapes) {
if(element.shapeName == shapes.toString()){
debugPrint('shape---${element.shapeName}');
temp.add(element);
}
});
if(param.color == element.color){
debugPrint('color---${element.color}');
}
param.colorVariants?.forEach((colorVariants) {
debugPrint('colorVariants---${element.color}');
});
});
</code>
_getSearchCount(
DiamondSearchParameters param,
) {
final List<Product> sortedDiamondsList = product!;
final List<Product> temp = [];
sortedDiamondsList.forEach((element) {
param.shapes?.forEach((shapes) {
if(element.shapeName == shapes.toString()){
debugPrint('shape---${element.shapeName}');
temp.add(element);
}
});
if(param.color == element.color){
debugPrint('color---${element.color}');
}
param.colorVariants?.forEach((colorVariants) {
debugPrint('colorVariants---${element.color}');
});
});