convertArea function

double convertArea(
  1. Area from,
  2. Area to,
  3. double value
)

Convert area. It may lose some decimals in the proccess.

from, to and value can NOT be null, otherwise an AssertionError is thrown

Basic usage:

main() {
  final area = convertArea(
    Area.squareMetre, // from
    Area.squareKilometre, // to
    10000000, // value
  );
  print(area); // 10
}

Read the documentation for more information

Implementation

double convertArea(Area from, Area to, double value) {
  verify(from, to, value);
  if (from == to) return value;
  if (from == Area.squareMetre) {
    switch (to) {
      case Area.squareKilometre:
        return value / 1e+6;
      case Area.squareMile:
        return value / 2.59e+6;
      case Area.squareYard:
        return value * 1.196;
      case Area.squareFoot:
        return value * 10.764;
      case Area.squareInch:
        return value * 1550;
      case Area.hectare:
        return value / 10000;
      case Area.acre:
        return value / 4047;
      default:
        return value;
    }
  } else {
    final squareMetre = Area.squareMetre;
    switch (from) {
      case Area.squareKilometre:
        return convertArea(squareMetre, to, value * 1e+6);
      case Area.squareMile:
        return convertArea(squareMetre, to, value * 2.59e+6);
      case Area.squareYard:
        return convertArea(squareMetre, to, value / 1.196);
      case Area.squareFoot:
        return convertArea(squareMetre, to, value / 10.764);
      case Area.squareInch:
        return convertArea(squareMetre, to, value / 1550);
      case Area.hectare:
        return convertArea(squareMetre, to, value * 10000);
      case Area.acre:
        return convertArea(squareMetre, to, value * 4047);
      default:
        return value;
    }
  }
}