Dart offers some unique and expressive operators like ??
, ??=
, ?.
, ..
, and ...?
that make your code cleaner, shorter, and safer.
1. Less Boilerplate Code
These operators help you write concise code without manually checking null
values or calling multiple methods repeatedly.
// Before
if (user != null) {
print(user.name);
}
// After
print(user?.name);
2. Elegant Null Safety (??
, ??=
, ?.
)
??
: Default Value
If a value is null, provide a fallback.
String? name;
print(name ?? 'Guest'); // Output: Guest
??=
: Assign If Null
String? name;
name ??= 'Guest';
?.
: Safe Property Access
print(user?.address?.city);
Instead of manually checking:
if (user != null && user.address != null) {
print(user.address.city);
}
3. Cascade Operator ..
: Method Chaining
The cascade operator lets you call multiple methods or set properties on the same object without repeating the variable.
// Without ..
var paint = Paint();
paint.color = Colors.red;
paint.strokeCap = StrokeCap.round;
paint.strokeWidth = 5.0;
// With ..
var paint = Paint()
..color = Colors.red
..strokeCap = StrokeCap.round
..strokeWidth = 5.0;
4. Null-aware Spread Operator ...?
You can spread list elements only if the list is not null, without writing if
statements.
List<int>? numbers = null;
var allNumbers = [0, ...?numbers]; // No error
Instead of:
var allNumbers = [0];
if (numbers != null) {
allNumbers.addAll(numbers);
}
Summary of Benefits
Operator | Main Benefit |
---|---|
?? |
Provide fallback for null values |
??= |
Assign value only if null |
?. |
Safe access to nullable properties |
...? |
Safely spread collections |
.. |
Chain multiple operations on the same object |
These operators are part of what makes Dart feel modern and expressive. They prevent null-related errors, reduce repetitive code, and improve readability — especially helpful when working with UI frameworks like Flutter.
0 Comments:
Post a Comment