getFieldString method

Future<String> getFieldString(
  1. int size,
  2. String? s
)

Implementation

Future<String> getFieldString(int size, String? s) async {
  try {
    String buffer = createEmptyString();
    // buffer.replace(0, size, emptyString);
    // buffer.setLength(size);
    if (buffer.length > size) {
      buffer = buffer.substring(0, size);
    }

    // international characters must be accounted for so size != length.
    int maxSize = size;
    if (s != null) {
      buffer = buffer.replaceRange(0, size, s);
      // TODO here Characters might be used
      var subStr = s.substring(0, math.min(size, s.length));
      int currentBytes = (await charset!.encode(subStr)).length;
      // int currentBytes =
      //         subStr
      //                 .getBytes(charset.name())
      //                 .length;
      if (currentBytes > size) {
        // char[] c = new char[1];
        // for (int index = size - 1; currentBytes > size; index--) {
        //     c[0] = buffer.charAt(index);
        //     String string = new String(c);
        //     buffer.deleteCharAt(index);
        //     currentBytes -= string.getBytes().length;
        //     maxSize--;
        // }
        buffer = buffer.substring(0, size);
      } else {
        if (s.length < size) {
          maxSize = size - (currentBytes - s.length);
          for (int i = s.length; i < size; i++) {
            buffer += ' ';
          }
        }
      }
    }

    // buffer.setLength(maxSize);
    if (buffer.length > maxSize) {
      buffer = buffer.substring(0, maxSize);
    }
    return buffer.toString();
  } catch (e) {
    print('ERROR: This error should never occurr');
    rethrow;
  }
}