MultiVariant constructor

MultiVariant(
  1. Iterable<IVariant> variants, {
  2. required MultiVariantOperator type,
})

Implementation

factory MultiVariant(
  Iterable<IVariant> variants, {
  required MultiVariantOperator type,
}) {
  final multiVariants = <MultiVariant>[];
  final otherVariants = <IVariant>[];

  for (var variant in variants) {
    if (variant is MultiVariant) {
      if (variant.operatorType == type) {
        otherVariants.addAll(variant.variants);
      } else {
        multiVariants.add(variant);
      }
    } else {
      otherVariants.add(variant);
    }
  }

  final combinedVariants = [...multiVariants, ...otherVariants];

  return MultiVariant._(combinedVariants.toList(), operatorType: type);
}