cover-img

Null Safety in Dart

30 March, 2023

2

2

0

Null Safety

Null safety is a feature in the Dart programming language that helps developers avoid null reference exceptions, which occur when a program attempts to access an object reference that is null, or null reference exceptions. In other words, null safety helps developers write code that is more reliable and less prone to errors by ensuring that variables cannot be null unless explicitly marked as such.

One way that null safety helps prevent null reference exceptions is by introducing the ? operator, which allows developers to explicitly mark a variable as nullable. For example, consider the following code:

String name = null;
print(name.length); // Throws a null reference exception

In this example, the name variable is assigned a value of null, and when we try to access the length property of the name variable, a null reference exception is thrown because the name variable is null.

To avoid this exception, we can use the ? operator to mark the name variable as nullable:

String? name = null;
print(name?.length); // Does not throw an exception

Now, when we try to access the length property of the name variable, no exception is thrown because the name variable is marked as nullable using the ? operator.

Another way that null safety helps prevent null reference exceptions is by introducing non-nullable types. In Dart, non-nullable types are types that are not allowed to be null, unless explicitly marked as such using the ? operator. For example, consider the following code:

int? x = null; // x is nullable
int y = null; // Throws a compile-time error

In this example, the x variable is declared as a nullable int using the ? operator, so it is allowed to be null. However, the y variable is not marked as nullable, so it is not allowed to be null, and a compile-time error is thrown.

Non-nullable types can help developers write more reliable code by ensuring that variables cannot be null unless explicitly marked as such.

In addition to the ? operator and non-nullable types, Dart also provides several other features to help developers avoid null reference exceptions, including the ?? operator, which allows developers to provide a default value for a nullable variable, and the required keyword, which can be used to mark a parameter as non-nullable.

Here is an example of the ?? operator in action:

String? name = null;
print(name ?? 'John Doe'); // Prints 'John Doe'

In this example, the name variable is null, so the ?? operator returns the default value of 'John Doe'. If the name variable was not null, the ?? operator would return the value of the name variable.

Here is an example of the required keyword in action:

void greet(String required name) {
print('Hello, $name!');
}

greet(null); // Throws a compile-time error

In this example, the greet function takes a required parameter name, which is marked with the required keyword. This means that the name parameter must not be null, and if it is,

The late identifier in Dart is used to declare a variable that is initialized at a later point in time. This is useful in situations where the value of the variable cannot be determined at the time of declaration, or when the value is expensive to compute and you want to delay the computation until it is actually needed.

To declare a late variable, you simply prefix the declaration with the late keyword. For example:

late int x;
late String name;

One important thing to note about late variables is that they must be non-nullable, meaning they cannot have a nullvalue. This is because the late keyword is used to delay initialization, not to allow the variable to be null. If you want to allow a late variable to be null, you can use the late final syntax, like this:

late final String? name;

To initialize a late variable, you can simply assign a value to it like you would with any other variable. For example:

x = 42;
name = 'Alice';

It's important to note that the value of a late variable is not actually computed until it is accessed for the first time. This means that if you never access the variable, the initialization code will never be executed. This can be useful for optimizing the performance of your program by avoiding unnecessary computations.

In conclusion, the late identifier in Dart is a useful tool for delaying the initialization of variables until they are actually needed. It can help you improve the performance of your programs by allowing you to avoid unnecessary computations and only initialize values when they are actually needed.

2

2

0

ShowwcaseHQ
Showwcase is where developers hang out and find new opportunities together as a community

More Articles

Showwcase is a professional tech network with over 0 users from over 150 countries. We assist tech professionals in showcasing their unique skills through dedicated profiles and connect them with top global companies for career opportunities.

© Copyright 2025. Showcase Creators Inc. All rights reserved.