Search code examples
classdartvariablesinstanceinstance-variables

Dart: create instance from a class (difference)



Based on that simple class:
class User { String? name; int? id; }

I'm not sure what is the difference between:
var user = User();
or:
User user = User();
If someone can shed some light on this I'll be more than happy.


Solution

  • There's no practical difference in this case. When you use the var keyword, the type will be inferred by the compiler, whereas declaring it as User is simply a way to explicitly define the type.

    There are some cases where it would make some difference though, such as when instantiating a generic type, like List.

    If you type:

    var list = [1, 2, 3];
    

    Then list will have a type of List<int>. But you might have wanted a list of doubles. In that case, you could write:

    List<double> list = [1, 2, 3];
    

    And you would be assured that list would have the type you want (though of course in this case you could also simply write var list = [1.0, 2.0, 3.0]).

    It's also helpful when instantiating an empty list, since in that case there are no values in the list from which the compiler can infer the type.