Zip<I1, I2>.fromEvenListParity constructor Null safety

Zip<I1, I2>.fromEvenListParity(
  1. List list
)

Creates a Zip by pairing an even index with its next odd index The list must have an even length or you will encounter an ArgumentError ex:

[1,2,3,4,5,6] -->
1,2
3,4
5,6

Implementation

factory Zip.fromEvenListParity(List list){
  if (list.length % 2 != 0) {
    throw ArgumentError('List must be even current at ${list.length}');
  }
  List<ZipItem<I1, I2>> newBaseList = [];
  for (EnumListItem enumItem in enumerateList(list)) {
    if (enumItem.i + 1 > list.length) {
      break;
    } else if (enumItem.i % 2 == 1) {
      continue;
    } else {
      newBaseList.add(ZipItem(enumItem.value, list[enumItem.index + 1]));
    }
  }
  return Zip(newBaseList);
}