encode method

String encode()

Implementation

String encode() {
  //break up data for encoding
  breakUpDataForEncoding();

  //insert the start characters
  insertStartandCodeCharacters();

  var encodedData = "";
  for (var s in _formattedData) {
    //handle exception with apostrophes in select statements
    var s1 = s.replaceAll("'", "''");
    List<_CodeData?> eRow = [];

    //select encoding only for type selected
    switch (_code128Type) {
      case Code128Type.A:
        eRow = _codes.where((item) => item!.a == s1).toList();
        break;
      case Code128Type.B:
        eRow = _codes.where((item) => item!.b == s1).toList();
        break;
      case Code128Type.C:
        eRow = _codes.where((item) => item!.c == s1).toList();
        break;
      case Code128Type.Auto:
        eRow = _codes.where((item) => item!.a == s1).toList();
        if (eRow.length <= 0) {
          eRow = _codes.where((item) => item!.b == s1).toList();

          if (eRow.length <= 0) {
            eRow = _codes.where((item) => item!.c == s1).toList();
          }
        }
        break;
    }

    if (eRow.length <= 0)
      throw new Exception("EC128-5: Could not find encoding of a value( " +
          s1 +
          " ) in C128 type " +
          _code128Type.toString());

    encodedData += eRow[0]!.encoding;
    _encodedData.add(eRow[0]!.encoding);
  }

  //add the check digit
  encodedData += calculateCheckDigit();
  _encodedData.add(calculateCheckDigit());

  //add the stop character
  encodedData += _codes.firstWhere((item) => item!.a == 'STOP')!.encoding;
  _encodedData.add(_codes.firstWhere((item) => item!.a == 'STOP')!.encoding);

  //add the termination bars
  encodedData += "11";
  _encodedData.add("11");

  return encodedData;
}