Menu
Coddy logo textTech

Optional Positional Parameters

Part of the Fundamentals section of Coddy's Dart journey — lesson 72 of 94.

Optional positional parameters in Dart allow you to create functions where some parameters are optional. You define them by placing parameters inside square brackets [].

Create a function with optional positional parameters:

void greet(String name, [String? greeting]) {
  if (greeting != null) {
    print('$greeting, $name!');
  } else {
    print('Hello, $name!');
  }
}

void main() {
  greet('Dart');
  greet('Dart', 'Welcome');
}

After executing the above code, the output will be:

Hello, Dart!
Welcome, Dart!

You can have multiple optional parameters:

int calculateTotal(int quantity, [int price = 10, int tax = 2]) {
  return quantity * price + tax;
}

void main() {
  print(calculateTotal(5));
  print(calculateTotal(5, 20));
  print(calculateTotal(5, 20, 5));
}

After executing the above code, the output will be:

52
102
105
challenge icon

Challenge

Beginner

In this challenge, you'll practice using optional positional parameters in Dart functions. Optional positional parameters allow you to create functions where some parameters are optional.

Complete the greet function below that takes a required name parameter and an optional title parameter. If the title is provided, the function should return a greeting with both the title and name. If no title is provided, it should just use the name.

Expected output:

Hello, John!
Hello, Dr. Smith!

Cheat sheet

Optional positional parameters in Dart are defined by placing parameters inside square brackets []:

void greet(String name, [String greeting]) {
  if (greeting != null) {
    print('$greeting, $name!');
  } else {
    print('Hello, $name!');
  }
}

You can have multiple optional parameters with default values:

int calculateTotal(int quantity, [int price = 10, int tax = 2]) {
  return quantity * price + tax;
}

Call functions with optional parameters by providing only the required arguments or including optional ones:

greet('Dart');           // Uses default behavior
greet('Dart', 'Welcome'); // Uses provided optional parameter

Try it yourself

void main() {
  // These variables are already defined for you
  String person1 = "John";
  String person2 = "Smith";
  String title = "Dr.";
  
  // Call the greet function with just the name
  print(greet(person1));
  
  // Call the greet function with both name and title
  print(greet(person2, title));
}

// TODO: Complete the greet function with an optional title parameter
// The title parameter should be optional (use square brackets [])
String greet(String name) {
  // If title is provided, return "Hello, {title} {name}!"
  // If title is not provided, return "Hello, {name}!"
}
quiz iconTest yourself

This lesson includes a short quiz. Start the lesson to answer it and track your progress.

All lessons in Fundamentals