Conditional (Ternary) Operator in Dart and Flutter

Last updated on May 18, 2021 Guest Contributor Loading... Post a comment

This article is a deep dive to Conditional (ternary) operator in Dart and Flutter.

The Basic

The conditional (ternary) operator is the only Dart operator that takes three operands: a condition followed by a question mark (?), then an expression to execute if the condition is truthy followed by a colon (:), and finally the expression to execute if the condition is falsy.

The syntax:

condition ? exprIfTrue : exprIfFalse


  • condition: An expression whose value is used as a condition.
  • exprIfTrue: An expression which is evaluated if the condition evaluates to a truthy value (one which equals or can be converted to true).
  • exprIfFalse: An expression which is executed if the condition is falsy (that is, has a value which can be converted to false).


String message(bool isValid) {
  return isValid ? 'This is valid' : 'This is not valid';

void main() {
        child: isLogin ? Text('You are a member') : Text('Hello Guest'),

Conditional chains

The ternary operator is right-associative, which means it can be “chained” to check multiple conditions in turn.

The syntax:

condition1 ? value1
         : condition2 ? value2
         : condition3 ? value3
         : condition4 ? value4
         : condition5 ? value5 // and so on
         : valueN;


int age = 30;
String output = age < 1 ? 'Infrant'
      : age < 4 ? 'Baby' 
      : age < 12 ? 'Middle Childhood'
      : age < 18 ? 'Adolescence'
      : 'Grown Up';

Null Checking Expression

This expression uses double-question-mark and can be used to test for null.

The syntax:

expr1 ?? expr2

If expr1 is non-null, returns its value; otherwise, evaluates and returns the value of expr2.


// Flutter
        child: Text(name ?? 'No Name Found'),

Ternary operator vs If-else statement

The conditional expression condition ? expr1: expr2 has a value of expr1 or expr2 while an if-else statement has no value. A statement often contains one or more expressions, but an expression can’t directly contain a statement.

There are some things that you can do with the ternary operator but can’t do with if-else. For example, if you need to initialize a constant or reference:

const int number = (some conditions) ? 100 : 1;

Writing Concise Code

In the vast majority of cases, you can do the same thing with a ternary operator and an if-else statement. However, using ? : helps us avoid redundantly repeating other parts of the same statements/function-calls, for example:

if (someCondition)
    return x;
    return y;

Compare with:

return condition ? x : y;


You’ve learned the fundamentals of using conditional expressions when programming in Dart. Continue exploring more new and interesting stuff by taking a look at the following articles: Sorting Lists in Dart and Flutter (5 Examples)Flutter and Firestore Database: CRUD exampleUsing GetX (Get) for State Management in FlutterUsing GetX (Get) for Navigation and Routing in FlutterFlutter & Dart: Get File Name and Extension from Path/URL.

You can also take a tour around our Flutter topic page, or Dart topic page for the latest tutorials and examples.

Related Articles

Notify of
Inline Feedbacks
View all comments
Would love your thoughts, please comment.x