023 – Funções em DART – Curso de FLUTTER e DART 2019
Playlist: Curso Grátis de FLUTTER e DART Completo
Curso de DART
Funções em DART
Funções
Dart é uma verdadeira linguagem orientada a objeto, então mesmo funções são objetos e possuem um tipo, Função. Isso significa que as funções podem ser atribuídas a variáveis ou passadas como argumentos para outras funções. Você também pode chamar uma instância de uma classe Dart como se fosse uma função. Para detalhes, consulte Classes que podem ser chamadas.
Veja um exemplo de implementação de uma função:
bool isNoble (int atomicNumber)
return _nobleGases [atomicNumber]! = null;
Embora o Effective Dart recomende anotações de tipo para APIs públicas, a função ainda funciona se você omitir os tipos:
isNoble (atomicNumber)
return _nobleGases [atomicNumber]! = null;
Para funções que contêm apenas uma expressão, você pode usar uma sintaxe abreviada:
bool isNoble (int atomicNumber) =MAIOR _nobleGases [atomicNumber]! = nulo;
A sintaxe =MAIOR expr é um atalho para return expr; . A notação =MAIOR é às vezes referida como sintaxe de seta.
Nota: Apenas uma expressão – não uma declaração – pode aparecer entre a seta (=MAIOR) e o ponto-e-vírgula (;). Por exemplo, você não pode colocar uma instrução if nela, mas pode usar uma expressão condicional.
Uma função pode ter dois tipos de parâmetros: obrigatório e opcional. Os parâmetros necessários são listados primeiro, seguidos por quaisquer parâmetros opcionais. Parâmetros opcionais nomeados também podem ser marcados como @required. Veja a próxima seção para detalhes.
Parâmetros opcionais
Os parâmetros opcionais podem ser posicionais ou nomeados, mas não ambos.
Parâmetros nomeados opcionais
Ao chamar uma função, você pode especificar parâmetros nomeados usando paramName: value. Por exemplo:
enableFlags (negrito: verdadeiro, oculto: falso);
Ao definir uma função, use param1, param2,… para especificar parâmetros nomeados:
/// Define os flags [bold] e [hidden] …
void enableFlags (bool bold, bool hidden) …
Expressões de criação de instância flutuante podem se tornar complexas, portanto, os construtores de widget usam parâmetros nomeados exclusivamente. Isso torna as expressões de criação de instância mais fáceis de ler.
Você pode anotar um parâmetro nomeado em qualquer código Dart (não apenas Flutter) com @required para indicar que é um parâmetro obrigatório. Por exemplo:
const Scrollbar (Key key, @required Widget child)
Quando uma barra de rolagem é construída, o analisador reporta um problema quando o argumento filho está ausente.
Obrigatório é definido no pacote meta. Importe o pacote: meta / meta.dart diretamente ou importe outro pacote que exporte meta, como o pacote Flutter: flutter / material.dart.
Parâmetros posicionais opcionais
Envolvendo um conjunto de parâmetros de função em [] marca-os como parâmetros posicionais opcionais:
Valores de parâmetros padrão
Sua função pode usar = para definir valores padrão para parâmetros nomeados e posicionais. Os valores padrão devem ser constantes de tempo de compilação. Se nenhum valor padrão for fornecido, o valor padrão será null.
Veja um exemplo de configuração de valores padrão para parâmetros nomeados:
/// Define os flags [bold] e [hidden] …
void enableFlags (bool bold = falso, bool oculto = falso) …
// negrito será verdadeiro; oculto será falso.
enableFlags (negrito: verdadeiro);
Nota de substituição: o código antigo pode usar dois pontos (:) em vez de = para definir valores padrão de parâmetros nomeados. A razão é que originalmente, apenas: era suportado para parâmetros nomeados. Esse suporte provavelmente será preterido, por isso recomendamos que você use = para especificar valores padrão.
Você também pode passar listas ou mapas como valores padrão. O exemplo a seguir define uma função, doStuff (), que especifica uma lista padrão para o parâmetro list e um mapa padrão para o parâmetro gifts.
A função main ()
Cada aplicativo deve ter uma função main () de nível superior, que serve como ponto de entrada para o aplicativo.
Veja um exemplo da função main () para um aplicativo da web:
void main ()
querySelector (‘# sample_text_id’)
..text = ‘Clique em mim!’
..onClick.listen (reverseText);