Error in calculation - Flutter

Asked

Viewed 95 times

-1

I am cracking my head in a problem that is giving in my debug in an application of mine which is as follows:

"The method '>' was called on null. Receiver: null Tried Calling: >(0)"

Follow the code for verification

    void calculate() {
    double totp1 = double.parse(precoController1.text) * 12;
    double totmlp1 = double.parse(unidadeController1.text) * 12;
    double totp2 = double.parse(precoController2.text) * 12;
    double totmlp2 = double.parse(unidadeController2.text) * 12;

    double difvalor;
    double latas;
    double litros;
    double totlitros;
    double diflitros;

    if (totp1 > totp2) {
      difvalor = totp1 - totp2;
      latas = (difvalor / double.parse(precoController2.text));
      litros = (latas * double.parse(unidadeController2.text));
      totlitros = litros + totmlp2;
      diflitros = totlitros - totmlp1;
    }
    if (diflitros > (0))
      print('Pelo mesmo preço do Produto 1 você leva $latas' +
          'latas do Produto 2, e ganha mais $diflitros' +
          'Mls');
    else if (diflitros < (0))
      print('Compensa comprar o Produto 1');
    else if (diflitros == (0))
      print('Levando o Produto 2, mais $latas' +
          'fica o mesmo que levar o produto 1');
    else {
      difvalor = totp2 - totp1;
      latas = (difvalor / double.parse(precoController1.text));
      litros = (latas * double.parse(unidadeController1.text));
      totlitros = litros + totmlp1;
      diflitros = totlitros - totmlp2;
    }

    if (diflitros > (0))
      print('Pelo mesmo preço do Produto 2 você leva $latas' +
          'latas do Produto 1, e ganha mais $diflitros' +
          'Mls');
    else if (diflitros < (0))
      print('Compensa comprar o Produto 2');
    else if (diflitros == (0))
      print('Levando o Produto 1, mais $latas' +
          'fica o mesmo que levar o produto 1');
  }
  • 2

    Even if you declare diflitros as double, if you do not initialize the variable explicitly with 0, Dart will initialize it as null, therefore diflitros > (0) makes an exception, as the comparison null > 0 is not valid.

  • I didn’t quite understand... What would be this exception?

1 answer

2

You declared the diflitros but did not start it. By default when a variable is declared and is not instantiated it is set to null. When validating in ifs Ex:

if (diflitros > (0))

diflitros is null, and it will try to compare null > (0) and that is not valid. Therefore an Exception is fired.

  • Thank you very much, I understand the problem.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.