According to this article:
As you might know, dynamic (as it is now called) is the stand-in type when a static type annotation is not provide
dynamic
var a ; a = 123; print(a is int); print(a); a = 'hal'; print(a is String);
When defined without initial value, var is dynamic
var b = 321; print(b is int); print(b); //b = 'hal'; //error print(b is String);
When defined with initial value, var is int in this case.