Parámetros

Una función puede tener cualquier número de parámetros obligatorios. Estos pueden ir seguidos de parámetros opcionales.

Parámetro obligatorio
Para requerir que quien llame a la función proporcione un valor para el parámetro, anótelo con required.
Parámetro posicional opcional
Al encapsular un conjunto de parámetros entre [] se marcan como parámetros posicionales opcionales.
Parámetro opcional con nombre
Usa llaves {} para marcar los parámetros opcionales con nombre. Para mayor claridad y no depender del orden.
Valor predeterminado
Utilice = para especificar un valor predeterminado (distinto de null), para un parámetro con nombre.
String say(required String from, String msg, [String device = 'carrier pigeon']) {
  var result = '$from says $msg with a $device';
  return result;
}

Dart no infiere el tipo de un parámetro opcional a partir de su valor predeterminado.

❌ Dart NO permite mezclar [] y {} en los parámetros.