int minVal = (a < b) ? a : b; // if(a < b) {minVal = a;} else {minVal = b;}
var x = y ?? z; // assign y to x if y is not null, else z
var x ??= y; // assign y to x only if x is null
myObject?.myProp // (myObject != null) ? myObject.myProp : null
myObject?.myProp?.someMethod() // chainable
print(1 ?? 3); // <-- Prints 1.
print(null ?? 12); // <-- Prints 12.
int a; // The initial value of a is null.
a ??= 3;
print(a); // <-- Prints 3.
a ??= 5;
print(a); // <-- Still prints 3.