Comment

// This is a comment.

A single-line comment. Dart also supports multi-line and document comments.

Variables

Creating variable using var keyword.

To create a variable use var keyword. This keyword means that you can assign any type of value to the variable.

var name = "Santanu";

name = 30; // Error

Now after the literal gets assigned to the variable name, the Dart automatically detect the type of the literal and decide how the variable should be treated throughout the execution of the program. In this case, the name is treated as String type. If you try to assign any value which is not string, the Dart compiler throws an error and program execution halts.

Creating variable using dynamic keyword

The dynamic keyword is used to create a variable whose data type is unknown. You can use this keyword to store any kind of data anytime on the same variable. It is just like var in Javascript.

dynamic value = 30;
dynamic number = "Santanu Bera";
number = 30; // Works

Creating variable using Object keyword

In dart everything is an Object. Even the keyword null is also an object. The variable always store reference. The reference to the object which is assigned to the variable. As everything in Dart is an object you can object keyword to create a variable. Which is same as dynamic keyword. You can store any value anytime on the same variable.

Object name = "Santanu Bera";
name = 30; // Works

Variable always stores reference

In dart everything is Object. Even number, string and null are object. That's why everything you store in a variable in an Object. Thus variable contains memory reference to the object which is assigned to the variable.

Strong Data Types

You can also use String, bool etc to create variable. These are called strong data types because you are declaring the type of data which is going to be assigned to the variable and the variable should not accept any value of other data type.

Default Value

What if you declare a variable and leave it uninitialize with a value, the value null is going to be the default value for any data type. So uninitialized or unassigned variable gets null value by default.

int rollNumber;
assert(rollNumber == null);

Constant

const and final

Use final and const keyword to declare a constant or variable whose value is fixed during the execution.

Instead of var, use const or final to declare a constant.

const pi = 3.14;
final numberOfStudents = 50;

If you want to explicitly specify the data type you can use the following structure:

const double pi = 3.14;
final int numberOfStudents = 3.14;

Difference between const and final keyword

The keyword const takes compile time constant value or static constant. Whereas final can take the runtime calculated or evaluated result of an expression. On the other hand, final is used for dynamic constants. For example:

const int value1 = 70; // Works fine
const int value1 = a + b + c; // Error, const takes a constant literal value not an expression.

final int value2 = a + b + c; // Okay, final takes runtime calculated value.
value2 = 60; // Error, Assigning other value is an error.

Once a value is set, further modification is not allowed.

Another difference is that final is used to declare a class level constant. Whereas using const for class level constant is an error. Instance variables can be final but not const.

Few example of static constants are:

const bar = 1000000; // Unit of pressure (dynes/cm2)
const double atm = 1.01325 * bar; // Standard atmosphere