Google uses cookies to deliver its services, to personalize ads, and to analyze traffic. You can adjust your privacy controls anytime in your Google settings . Learn more .

Preview the future of Dart and Flutter with the Dart 3 alpha release and on-demand content from Flutter Forward .

  • Language samples
  • List of Dart codelabs
  • Language cheatsheet
  • Iterable collections
  • Asynchronous programming
  • Null safety
  • Type system
  • Extension methods
  • Concurrency
  • Overview: Sound null safety
  • Migrating to null safety
  • Understanding null safety
  • Unsound null safety
  • Documentation
  • Creating streams
  • How to use packages
  • Commonly used packages
  • Creating packages
  • Publishing packages
  • Writing package pages
  • Dependencies
  • Package layout conventions
  • Pub environment variables
  • Pubspec file
  • Troubleshooting pub
  • Verified publishers
  • Futures, async, await
  • Number representation
  • Objective-C and Swift interop
  • Java and Kotlin interop
  • JavaScript interop
  • Google APIs
  • Multi-platform apps
  • Get started
  • Write command-line apps
  • Fetch data from the internet
  • Write HTTP servers
  • Libraries and packages
  • Google Cloud
  • Connect Dart & HTML
  • Add elements to the DOM
  • Remove DOM elements
  • Environment declarations
  • IntelliJ & Android Studio
  • Dart DevTools
  • DartPad in tutorials
  • Troubleshooting DartPad
  • dart analyze
  • dart compile
  • dart create
  • dart format
  • dartaotruntime
  • Experiment flags
  • build_runner
  • Formatting code
  • What not to commit
  • Customizing static analysis
  • Fixing common type problems
  • Diagnostic messages
  • Linter rules
  • Debugging web apps
  • Language evolution
  • Language specification
  • JavaScript to Dart
  • Swift to Dart
  • API reference open_in_new
  • Blog open_in_new
  • DartPad (online editor) open_in_new
  • Flutter open_in_new
  • Package site open_in_new

String interpolation

Nullable variables, null-aware operators, conditional property access, collection literals, arrow syntax, getters and setters, optional positional parameters, named parameters, using this in a constructor, initializer lists, named constructors, factory constructors, redirecting constructors, const constructors, what’s next, dart cheatsheet codelab.

The Dart language is designed to be easy to learn for coders coming from other languages, but it has a few unique features. This codelab—which is based on a Dart language cheatsheet written by and for Google engineers—walks you through the most important of these language features.

The embedded editors in this codelab have partially completed code snippets. You can use these editors to test your knowledge by completing the code and clicking the Run button. If you need help, click the Hint button. To run the code formatter ( dart format ), click Format . The Reset button erases your work and restores the editor to its original state.

To put the value of an expression inside a string, use ${expression} . If the expression is an identifier, you can omit the {} .

Here are some examples of using string interpolation:

Code example

The following function takes two integers as parameters. Make it return a string containing both integers separated by a space. For example, stringify(2, 3) should return '2 3' .

Dart 2.12 introduced sound null safety, meaning that (when you enable null safety ) values can’t be null unless you say they can be. In other words, types are non-nullable by default.

For example, consider the following code, which is invalid because (with null safety) a variable of type int can’t have the value null :

When creating a variable in Dart 2.12 or higher, you can add ? to the type to indicate that the variable can be null :

You can simplify that code a bit because, in all versions of Dart, null is the default value for uninitialized variables:

For more information about null safety in Dart, read the sound null safety guide .

Try to declare two variables below:

Ignore all initial errors in the DartPad.

Dart offers some handy operators for dealing with values that might be null. One is the ??= assignment operator, which assigns a value to a variable only if that variable is currently null:

Another null-aware operator is ?? , which returns the expression on its left unless that expression’s value is null, in which case it evaluates and returns the expression on its right:

Try substituting in the ??= and ?? operators to implement the described behavior in the following snippet.

To guard access to a property or method of an object that might be null, put a question mark ( ? ) before the dot ( . ):

The preceding code is equivalent to the following:

You can chain multiple uses of ?. together in a single expression:

The preceding code returns null (and never calls someMethod() ) if either myObject or myObject.someProperty is null.

Try using conditional property access to finish the code snippet below.

Dart has built-in support for lists, maps, and sets. You can create them using literals:

Dart’s type inference can assign types to these variables for you. In this case, the inferred types are List<String> , Set<String> , and Map<String, int> .

Or you can specify the type yourself:

Specifying types is handy when you initialize a list with contents of a subtype, but still want the list to be List<BaseType> :

Try setting the following variables to the indicated values. Replace the existing null values.

You might have seen the => symbol in Dart code. This arrow syntax is a way to define a function that executes the expression to its right and returns its value.

For example, consider this call to the List class’s any() method:

Here’s a simpler way to write that code:

Try finishing the following statements, which use arrow syntax.

To perform a sequence of operations on the same object, use cascades ( .. ). We’ve all seen an expression like this:

It invokes someMethod() on myObject , and the result of the expression is the return value of someMethod() .

Here’s the same expression with a cascade:

Although it still invokes someMethod() on myObject , the result of the expression isn’t the return value—it’s a reference to myObject !

Using cascades, you can chain together operations that would otherwise require separate statements. For example, consider the following code, which uses the conditional member access operator ( ?. ) to read properties of button if it isn’t null :

To instead use cascades, you can start with the null-shorting cascade ( ?.. ), which guarantees that none of the cascade operations are attempted on a null object. Using cascades shortens the code and makes the button variable unnecessary:

Use cascades to create a single statement that sets the anInt , aString , and aList properties of a BigObject to 1 , 'String!' , and [3.0] (respectively) and then calls allDone() .

You can define getters and setters whenever you need more control over a property than a simple field allows.

For example, you can make sure a property’s value is valid:

You can also use a getter to define a computed property:

Imagine you have a shopping cart class that keeps a private List<double> of prices. Add the following:

Dart has two kinds of function parameters: positional and named. Positional parameters are the kind you’re likely familiar with:

With Dart, you can make these positional parameters optional by wrapping them in brackets:

Optional positional parameters are always last in a function’s parameter list. Their default value is null unless you provide another default value:

Implement a function called joinWithCommas() that accepts one to five integers, then returns a string of those numbers separated by commas. Here are some examples of function calls and returned values:

Using a curly brace syntax at the end of the parameter list, you can define parameters that have names.

Named parameters are optional unless they’re explicitly marked as required .

As you might expect, the default value of a nullable named parameter is null , but you can provide a custom default value.

If the type of a parameter is non-nullable, then you must either provide a default value (as shown in the following code) or mark the parameter as required (as shown in the constructor section ).

A function can’t have both optional positional and named parameters.

Add a copyWith() instance method to the MyDataObject class. It should take three named, nullable parameters:

Your copyWith() method should return a new MyDataObject based on the current instance, with data from the preceding parameters (if any) copied into the object’s properties. For example, if newInt is non-null, then copy its value into anInt .

Dart code can throw and catch exceptions. In contrast to Java, all of Dart’s exceptions are unchecked exceptions. Methods don’t declare which exceptions they might throw, and you aren’t required to catch any exceptions.

Dart provides Exception and Error types, but you’re allowed to throw any non-null object:

Use the try , on , and catch keywords when handling exceptions:

The try keyword works as it does in most other languages. Use the on keyword to filter for specific exceptions by type, and the catch keyword to get a reference to the exception object.

If you can’t completely handle the exception, use the rethrow keyword to propagate the exception:

To execute code whether or not an exception is thrown, use finally :

Implement tryFunction() below. It should execute an untrustworthy method and then do the following:

Dart provides a handy shortcut for assigning values to properties in a constructor: use this.propertyName when declaring the constructor:

This technique works for named parameters, too. Property names become the names of the parameters:

In the preceding code, red , green , and blue are marked as required because these int values can’t be null. If you add default values, you can omit required :

Add a one-line constructor to MyClass that uses this. syntax to receive and assign values for all three properties of the class.

Sometimes when you implement a constructor, you need to do some setup before the constructor body executes. For example, final fields must have values before the constructor body executes. Do this work in an initializer list, which goes between the constructor’s signature and its body:

The initializer list is also a handy place to put asserts, which run only during development:

Complete the FirstTwoLetters constructor below. Use an initializer list to assign the first two characters in word to the letterOne and LetterTwo properties. For extra credit, add an assert to catch words of less than two characters.

To allow classes to have multiple constructors, Dart supports named constructors:

To use a named constructor, invoke it using its full name:

Give the Color class a constructor named that sets all three properties to zero.

Dart supports factory constructors, which can return subtypes or even null. To create a factory constructor, use the factory keyword:

Fill in the factory constructor named IntegerHolder.fromList , making it do the following:

Sometimes a constructor’s only purpose is to redirect to another constructor in the same class. A redirecting constructor’s body is empty, with the constructor call appearing after a colon ( : ).

Remember the Color class from above? Create a named constructor called black , but rather than manually assigning the properties, redirect it to the default constructor with zeros as the arguments.

If your class produces objects that never change, you can make these objects compile-time constants. To do this, define a const constructor and make sure that all instance variables are final.

Modify the Recipe class so its instances can be constants, and create a constant constructor that does the following:

We hope you enjoyed using this codelab to learn or test your knowledge of some of the most interesting features of the Dart language. Here are some suggestions for what to do now:

Data Structure

Ternary Operator in Dart Programming

The ternary operator is a shorthand version of an if-else condition. There are two types of ternary operator syntax in Dart, one with a null safety check and the other is the same old one we encounter normally.

The above syntax implies that if a certain condition evaluates to true then we evaluate the expressionOne first and then the expressionTwo .

Let's explore a Dart example where we make use of the above syntax of the ternary operator.

Consider the example shown below −

 Live Demo

In the above example, we declared a variable named ans with a value 10, and then in the next line, we have a condition of the ternary operator where we are checking if it is equal to 10. If so, then evaluate the first expression else evaluate the expression after the colon (:).

It depicts a conditional statement that is similar to a ternary operator statement. The only difference is that in the above syntax if expression1 is not null, then it gets evaluated else expression2 is evaluated.

Mukul Latiyan


Tutorials Point

conditional expression dart

Dart Conditionals

Decision-making expressions are those which let programmers choose which statement to execute under different circumstances. Conditional statements are used in different programming languages to inform the computer on what factors to make when certain conditions are met. These decisions are taken only if the already stated conditions are true or false: it depends on the functions in the mind of the programmer. The if statement, if-else statement, and if-else-if statements are often used in Dart to introduce the conditional implementation of statements based on one or more Boolean expressions.

The syntax within the example of the Dart If statement, If-Else statement, If-Else-If ladder, and nested If-Else statement will be covered in this tutorial.

How to use the conditionals in the dart in Ubuntu 20.04?

We have demonstrated the representation and implementation of the If statement, If-Else statement, If-Else-If ladder, and nested If-Else statement in the following dart examples.

Example # 1: Using the if condition in a dart in Ubuntu 20.04:

The if statement simply searches the condition and executes the statements inside it if it is true; otherwise, the statements are ignored in the code.

conditional expression dart

This example starts with the main function where we have implemented if conditional statement. First, we have defined a variable “myNumber” which has the integer value stored in it. After that this variable is utilized inside the if condition. The if has the condition that the variable “number” should be greater than the number “20”. As we have the number “30” greater than the number “20” so the if block returns a print statement. If in case our condition becomes false, then nothing will be executed.

The true statement of if-condition is executed as follows:

conditional expression dart

Example # 2: Using the if-else condition in a dart in Ubuntu 20.04:

This type of statement checks the condition and executes the statements contained within if it is true; otherwise, the statements contained within else are executed.

If the Boolean expression inside the “if” is true, the script inside the if block is executed, and further execution proceeds with the conditions next to the if-else block.

If the Boolean expression next to the if keyword returns false, the script inside the else block is executed, and the statements next to the if-else block are executed.

conditional expression dart

In the above dart script, we have first defined the main function. The main function has the integer type variable declared as a “number” to which we have assigned a numeric value. Through the print statement, we have displayed the number inside the variable. Then, we have the if-else representation. The if has the condition given that the variable “number” should be greater than “20”. Inside the if block, the print statement will be executed upon the condition that returns a true value. If the condition returns a false value, then else block will be executed and the if block will be ignored.

As the variable “number” has the value “15” which is not greater than the number inside the if the condition is “20” so the if condition becomes false here. Hence, the else block is executed as follows.

conditional expression dart

Example # 3: Using the if-else-if ladder condition in a dart in Ubuntu 20.04:

If-Else-If ladders can have a ladder of else-if blocks, but only if a block is required which is at the start and one else block at the optional end.

The Boolean expressions are checked one by one during the execution. If the Boolean condition is true, the associated block of statements is executed; otherwise, the program control moves to the next Boolean in the ladder to be evaluated. The else block is executed if either of the Boolean evaluates is true.

conditional expression dart

The program has the main function definition where at the initial step, we have constructed a variable as “numeric_val” with the data type “int”. Then, we have the ladder of the if-else statement. The first statement is the if-statement where the condition is defined as the numeric_val Ilesser than the number “5”. If that condition is true, then our first if-condition is executed. Similarly, it considers the second if condition. If it is true, it executes the statements within its block and moves control to the next statement; otherwise, it checks another if condition. Finally, if no if-condition evaluates to true, the statements within the else block are executed and control is passed to the next statement.

From the above if-else ladder, condition2 is true so the if-condition block is executed on the shell of Ubuntu as follows:

conditional expression dart

Example # 4: Using the nested if-else condition in a dart in Ubuntu 20.04:

In this dart script, we have the variable “Age” of int data type and the variable contains the integer value within the dart main function. Then, we have the if expression, and the if expression is passed with the condition that “age” should be greater than the number “20”. Inside the if block we have first incremented the variable “Age” and then defined the if-else condition within the existing if expression. If the true results are returned from the nested if expression, then the if statement is executed, otherwise the else block is created for the false returned results. If the main if-condition results are false, then the nested if the condition is ignored and nothing will be executed from the above dart script.

conditional expression dart

As our main if-expression has the true results so the condition is entered into the if-condition block where we have if-else expressions. Inside the if expression our condition fails so the else is executed in the below shell.

conditional expression dart


Coding without conditionals forces you to think outside the box. You will have to find new ways to frame your code to try and make it more understandable. It can also assist you in gaining knowledge about computation and/or object-oriented approaches. We have driven all the conditional exists in the dart programming language with the example. We are hoping that there will be no uncertainty with the dart conditionals.

About the author

conditional expression dart

Hello geeks! I am here to guide you about your tech-related issues. My expertise revolves around Linux, Databases & Programming. Additionally, I am practicing law in Pakistan. Cheers to all of you.

flutter logo

Flutter by Example

on Saturday, 18th of July, 2020

The ternary operator is technically that: an operator. But, it's also kind of an if / else substitute. It's also kind of a ?? alternative, depending on the situation. The ternary expression is used to conditionally assign a value. It's called ternary because it has three portions: the condition, the value if the condition is true, and the value if the condition is false.

In the above example isReturningCustomer is a boolean. If it is true, the variable called alert will be assigned the value "Welcome back to our site!". Otherwise, alert will be assigned the value "Welcome, please sign up.".

Join thousands of Flutter developers.

Sign up for infrequent updates about flutter and dart..

flutter in action book cover

You can get all this content and more in one place. Check out my new book Flutter in Action

Dart Fundamentals


#4.2 Dart Conditional Expressions

Course: kotlin coroutines.

In this beginner tutorial, explore dart conditional expressions which are similar to what we have as the ternary operator in Java. Also, explore the second type of expression such as “expression1 ?? expression2”.

conditional expression dart

Get the code for this tutorial

Complete source code for the course.

conditional expression dart

If we execute If and else code, the compiler is showing as undefined else , expected ; after else….I was not able to understand what is compiler is saying

Add a Comment Cancel reply

Your email address will not be published. Required fields are marked *

Notify me of new posts by email.

Post Comment

Get In Touch

More Dart Tutorial

Dart Conditional Operators

Laravel 9 Livewire Pagination with Search

Laravel 9 livewire pagination example, laravel 9 check user login, online status & last seen.

codeigniter 4 image upload example tutorial

Laravel 9 livewire charts example, laravel 9 livewire crud example, laravel 9 livewire multiple image upload, laravel 9 livewire image upload, laravel 9 livewire submit form, laravel 9 simple crud application example.



In this tutorial you will learn about the Dart Conditional Operators and its application with practical example.

If condition is true the expression will return expr1 , if it is not it will return expr2 .

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

conditional expression dart

Related Tags

Ternary operator in Dart

conditional expression dart

The conditional ternary operator  assigns a value to a variable based on some conditions. It is used in place of the  if statement. This operator also controls the flow of logical execution in the code

Note: The ternary operator is the only dart operator that takes 3 operators.

Let's look at the code below:


In the code above, we try to add grading to the student's score.



conditional expression dart

View all Courses

Learn in-demand tech skills in half the time

For Enterprise

For Individuals

For HR & Recruiting

For Bootcamps

Educative Learning

Educative Onboarding

Educative Skill Assessments

Educative Projects

Privacy Policy

Terms of Service

Business Terms of Service

Become an Author

Become an Affiliate

Become a Contributor

Educative Blog

Educative Sessions

Educative Answers

Frequently Asked Questions

GitHub Students Scholarship

Course Catalog

Early Access Courses

Earn Referral Credits

Copyright © 2023 Educative, Inc. All rights reserved.

Conditional (Ternary) Operator in Dart and Flutter

( 70 Articles)

July 12, 2022

January 8, 2023

July 9, 2022

February 10, 2023

January 13, 2023

January 30, 2023

February 6, 2023

conditional expression dart

This article is a deep dive into conditional (ternary) operators in Dart and Flutter.

The syntax:

Conditional chains

Null checking expression.

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

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

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:

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:

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:

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

Related Articles

February 12, 2023

February 8, 2023

February 5, 2023

September 28, 2022

August 22, 2022

September 27, 2022

August 18, 2022


Free, high quality development tutorials and examples for all levels

alvin alexander

The Dart ternary operator syntax (examples)

As a quick note, in the Dart programming language, the ternary operator syntax is the same as the Java ternary operator syntax . The general syntax is:

Dart ternary operator syntax examples

A few examples helps to demonstrate Dart’s ternary syntax:

Here are some examples of how I use Dart’s ternary operator syntax in Flutter code:

In summary, if you wanted to see some examples of the Dart ternary operator syntax, I hope this is helpful.

Help keep this website running!

books i’ve written


  1. Conditional expression in Dart

    conditional expression dart

  2. Dart Conditional Operators

    conditional expression dart

  3. Dart Conditional Expressions: Ternary Operator

    conditional expression dart

  4. Conditional Expressions

    conditional expression dart

  5. #4.3 Dart

    conditional expression dart

  6. #29 Conditional Expression

    conditional expression dart


  1. 16 Oracle Database Conditional Expression CASE DECODE

  2. Dart lambda expression في لغة دارت

  3. How to Simplify an IF statement to a Conditional expression


  5. 011

  6. 16. T-SQL


  1. A tour of the Dart language

    Dart has both expressions (which have runtime values) and statements (which don't). For example, the conditional expression condition ? expr1 : expr2 has a

  2. Dart cheatsheet codelab

    To put the value of an expression inside a string, use ${expression} . ... Try using conditional property access to finish the code snippet below. Dart

  3. Ternary Operator in Dart Programming

    The ternary operator is a shorthand version of an if-else condition. There are two types of ternary operator syntax in Dart, one with a null

  4. Dart Conditionals

    Decision-making expressions are those which let programmers choose which statement to execute under different circumstances. Conditional statements are used

  5. Ternary Conditional operator

    The ternary expression is used to conditionally assign a value. ... ```dart String alert = isReturningCustomer ? ... Ternary Conditional operator.

  6. #4.2 Dart Conditional Expressions

    dart conditional expressions, similar to what we have as ternary operator in Java | Dart tutorial for beginner to create flutter app.

  7. Dart Conditional Operators

    Dart Conditional Operators ( ? : ) ... The conditional operator is considered as short hand for if-else statement. Conditional operator is also called as “Ternary

  8. Ternary operator in Dart

    Syntax · The condition is the expression whose value determines the used value. · The value after the ? is returned if the condition returns true . · The value

  9. Conditional (Ternary) Operator in Dart and Flutter

    The conditional (ternary) operator is just a Dart operator that takes three operands: a condition followed by a question mark (?), then an

  10. The Dart ternary operator syntax (examples)

    Dart ternary operator syntax examples. A few examples helps to demonstrate Dart's ternary syntax: int a = -1; int b = 2; // get the min