Skip to main content

Parâmetros

  • Parâmetros

Em geral, parâmetros/ argumentos de função (os termos são usados de forma intercambiável aqui) são um conceito fundamental.

Você usa argumentos para passar valores para uma função. A função pode então usar esses valores de parâmetro para diferentes propósitos - por exemplo, para exibi-los na tela, usá-los em um cálculo ou enviá-los para outra função.

Em Dart (e, portanto, em Flutter, já que ele usa Dart), existem dois tipos de parâmetros que você pode aceitar em funções:

  1. Posicionais: A posição de um argumento determina qual parâmetro recebe o valor.
void add(a, b) { // a & b são parâmetros posicionais
print(a + b); // print() é uma função embutida que será explicada mais tarde
}

add(5, 10); // 5 é usado como valor para a, porque é o primeiro argumento; 10 é usado como valor para b
  1. Nomeados: O nome de um argumento determina qual parâmetro recebe o valor.
void add({a, b}) { // a & b são parâmetros nomeados (por causa das chaves)
print(a + b);
}

add(b: 5, a: 10); // 5 é usado como valor para b, porque está atribuído a esse nome; 10 é usado como valor para a

Além do uso diferente, há uma diferença muito importante entre argumentos posicionais e nomeados: Por padrão, parâmetros posicionais são obrigatórios e não podem ser omitidos - por outro lado, argumentos nomeados são opcionais e podem ser omitidos.

No exemplo acima, ao usar parâmetros nomeados, você poderia chamar add() assim:

add();

ou

add(b: 5);

Ao usar parâmetros posicionais, chamar add() dessa maneira seria inválido e causaria um erro!

Você pode, no entanto, mudar esses comportamentos. Você pode tornar argumentos posicionais opcionais e argumentos nomeados obrigatórios.

Argumentos posicionais podem ser tornados opcionais colocando-os entre colchetes ([]):

void add(a, [b]) { // b é opcional
print(a + b);
}

Uma vez que um parâmetro é opcional, você também pode atribuir um valor padrão a ele - esse valor será usado se nenhum valor for fornecido para o argumento:

void add(a, [b = 5]) { // b é opcional, 5 será usado como valor padrão
print(a + b);
}
add(10); // b ainda seria 5 porque não foi sobrescrito
add(10, 6); // aqui, b seria 6

Valores padrão também podem ser atribuídos a parâmetros nomeados - que são opcionais por padrão:

void add({a, b = 5}) { // b tem um valor padrão de 5
print(a + b);
}

add(b: 10); // para b, 10 seria usado em vez de 5; a não tem valor padrão e seria "null" aqui => um tipo de valor especial que você aprenderá ao longo deste curso

Você também pode tornar parâmetros nomeados obrigatórios usando a palavra-chave embutida required:

void add({required a, required b}) { // a & b não são mais opcionais
print(a + b);
}