A record can carry named fields with ({String name, int score}). Named fields make the call site and field access self-documenting while still avoiding a full class declaration.

Program

Play the program to build a named-field record and read its fields with dot syntax.

record_named_fields.dart
({String name, int score}) buildScore(String name, int score) {
  return (name: name, score: score);
}

void main() {
  var points = ;
  var result = buildScore('Ada', points);
  var message = '${result.name}: ${result.score}';
  print(message);
}
({String name, int score}) buildScore(String name, int score) {
  return (name: name, score: score);
}

void main() {
  var points = ;
  var result = buildScore('Ada', points);
  var message = '${result.name}: ${result.score}';
  print(message);
}
({String name, int score}) buildScore(String name, int score) {
  return (name: name, score: score);
}

void main() {
  var points = ;
  var result = buildScore('Ada', points);
  var message = '${result.name}: ${result.score}';
  print(message);
}
named record type `({String name, int score})` declares a record with two named fields.
record literal `(name: name, score: score)` stores values under field names instead of positions.
field access `result.name` and `result.score` read the named fields directly, so later code does not rely on tuple order.