Message.parse constructor

Message.parse(
  1. String messageString
)

Implementation

factory Message.parse(String messageString) {
  final _mti =
      MessageTypeIndicator.fromMtiString(messageString.substring(0, 4));
  final bitmap = messageString.substring(4, 20);
  var message = Message()..mti = _mti;
  var binary = "";
  for (int i = 0; i < bitmap.length; i++) {
    binary += int.parse(bitmap[i]).toRadixString(2).padLeft(4, '0');
  }

  var offsset = 20;

  for (var i = 0; i < binary.length; i++) {
    if (binary[i] == '1') {
      final field = fieldFromCode(i + 1);
      final fieldData = field.data!;
      if (fieldData.isFixed) {
        message.addFieldValue(
            field, messageString.substring(offsset, offsset + fieldData.len));
        offsset += fieldData.len;
      } else {
        var formatLength = fieldData.format!.length;
        var fieldLenght = int.parse(
          messageString.substring(offsset, offsset + formatLength),
        );
        offsset += formatLength;
        message.addFieldValue(
            field, messageString.substring(offsset, offsset + fieldLenght));
        offsset += fieldLenght;
      }
    }
  }
  print(binary);

  return message;
}