Named parameters live in {...}. Each can carry a default so the caller can omit it.

Program

Play the program to call a greeter with and without a named prefix.

named_params.dart
Replay: real traced execution (multi-file project)
String greet(String name, {String prefix = 'Hello'}) {
  return '$prefix, $name!';
}

void main() {
  var a = greet('Ada');
  var b = greet('Lin', prefix: 'Hi');
  print('$a / $b');
}
  1. call ← greet('Ada')

    5void main() {6  var a = greet('Ada');7  var b = greet('Lin', prefix: 'Hi');
    values this stepgreet('Ada')call
  2. return value ← Hello, Ada!

    1String greet(String name, {String prefix = 'Hello'}) {2  return '$prefix, $name!';3}
    values this stepHello, Ada!return valueAdanameHelloprefix
  3. a ← Hello, Ada!

    5void main() {6  var a = greet('Ada');7  var b = greet('Lin', prefix: 'Hi');
    values this stepHello, Ada!a
  4. call ← greet('Lin', prefix: 'Hi')

    6var a = greet('Ada');7var b = greet('Lin', prefix: 'Hi');8print('$a / $b');
    values this stepgreet('Lin', prefix: 'Hi')call
  5. return value ← Hi, Lin!

    1String greet(String name, {String prefix = 'Hello'}) {2  return '$prefix, $name!';3}
    values this stepHi, Lin!return valueLinnameHiprefix
  6. b ← Hi, Lin!

    6var a = greet('Ada');7var b = greet('Lin', prefix: 'Hi');8print('$a / $b');
    values this stepHi, Lin!b
  7. print('$a / $b');

    7  var b = greet('Lin', prefix: 'Hi');8  print('$a / $b');9}
    outputHello, Ada! / Hi, Lin!
    values this stepHello, Ada!aHi, Lin!b
named params Names in `{...}` are passed as `name: value`.
default `prefix = 'Hello'` is used when the caller omits `prefix`.
call site `greet('Lin', prefix: 'Hi')` mixes positional and named.