tryParse static method

CSSParsedLengthValue? tryParse(
  1. String text
)

Implementation

static CSSParsedLengthValue? tryParse(String text) {
  double? parsedValue;
  CSSLengthType unit = CSSLengthType.PX;
  if (text == ZERO) {
    return zero;
  } else if (text == INITIAL) {
    return initial;
  } else if (text == INHERIT) {
    return null;
  } else if (text == AUTO) {
    return auto;
  } else if (text == NONE) {
    return none;
  } else if (text == NORMAL) {
    return normal;
  } else if (text.toLowerCase() == 'content') {
    return content;
  } else if (text.toLowerCase() == 'min-content') {
    return minContent;
  } else if (text.toLowerCase() == 'max-content') {
    return maxContent;
  } else if (text.toLowerCase() == 'fit-content') {
    return fitContent;
  } else if (text.endsWith(REM)) {
    parsedValue = double.tryParse(text.split(REM)[0]);
    unit = CSSLengthType.REM;
  } else if (text.endsWith(EM)) {
    parsedValue = double.tryParse(text.split(EM)[0]);
    unit = CSSLengthType.EM;
  } else if (text.endsWith(EX)) {
    parsedValue = double.tryParse(text.split(EX)[0]);
    unit = CSSLengthType.EX;
  } else if (text.endsWith(CH)) {
    parsedValue = double.tryParse(text.split(CH)[0]);
    unit = CSSLengthType.CH;
  } else if (text.endsWith(RPX)) {
    parsedValue = double.tryParse(text.split(RPX)[0]);
    unit = CSSLengthType.RPX;
  } else if (text.endsWith(PX)) {
    parsedValue = double.tryParse(text.split(PX)[0]);
  } else if (text.endsWith(VW)) {
    parsedValue = double.tryParse(text.split(VW)[0]);
    if (parsedValue != null) {
      parsedValue = parsedValue / 100;
    }
    unit = CSSLengthType.VW;
  } else if (text.endsWith(VH)) {
    parsedValue = double.tryParse(text.split(VH)[0]);
    if (parsedValue != null) {
      parsedValue = parsedValue / 100;
    }
    unit = CSSLengthType.VH;
  } else if (text.endsWith(CM)) {
    parsedValue = double.tryParse(text.split(CM)[0]);
    if (parsedValue != null) {
      parsedValue = parsedValue * _1cm;
    }
  } else if (text.endsWith(MM)) {
    parsedValue = double.tryParse(text.split(MM)[0]);
    if (parsedValue != null) {
      parsedValue = parsedValue * _1mm;
    }
  } else if (text.endsWith(PC)) {
    parsedValue = double.tryParse(text.split(PC)[0]);
    if (parsedValue != null) {
      parsedValue = parsedValue * _1pc;
    }
  } else if (text.endsWith(PT)) {
    parsedValue = double.tryParse(text.split(PT)[0]);
    if (parsedValue != null) {
      parsedValue = parsedValue * _1pt;
    }
  } else if (text.endsWith(VMIN)) {
    parsedValue = double.tryParse(text.split(VMIN)[0]);
    if (parsedValue != null) {
      parsedValue = parsedValue / 100;
    }
    unit = CSSLengthType.VMIN;
  } else if (text.endsWith(VMAX)) {
    parsedValue = double.tryParse(text.split(VMAX)[0]);
    if (parsedValue != null) {
      parsedValue = parsedValue / 100;
    }
    unit = CSSLengthType.VMAX;
  } else if (text.endsWith(IN)) {
    parsedValue = double.tryParse(text.split(IN)[0]);
    if (parsedValue != null) {
      parsedValue = parsedValue * _1in;
    }
  } else if (text.endsWith(Q)) {
    parsedValue = double.tryParse(text.split(Q)[0]);
    if (parsedValue != null) {
      parsedValue = parsedValue * _1Q;
    }
  } else if (text.endsWith(PERCENTAGE)) {
    parsedValue = double.tryParse(text.split(PERCENTAGE)[0]);
    if (parsedValue != null) {
      parsedValue = parsedValue / 100;
    }
    unit = CSSLengthType.PERCENTAGE;
  } else if (CSSFunction.isFunction(text)) {
    return null;
  } else {
    parsedValue = double.tryParse(text);
  }

  if (parsedValue == 0 && unit != CSSLengthType.PERCENTAGE) {
    return zero;
  }
  if (parsedValue == null) {
    return null;
  }

  return CSSParsedLengthValue(parsedValue, unit);
}