Dart:
Organizando código em funções

Como Fazer:

Função Básica

No Dart, você define uma função usando a palavra-chave void se ela não retornar um valor, ou especifica o tipo de valor que retorna de outra forma. Aqui está uma função simples que imprime uma mensagem de saudação:

void greet(String name) {
  print('Olá, $name!');
}

void main() {
  greet('Alice');  // Saída: Olá, Alice!
}

Retornando um Valor

Funções podem retornar valores. O exemplo a seguir recebe dois inteiros como entrada e retorna a soma deles:

int add(int a, int b) {
  return a + b;
}

void main() {
  var soma = add(5, 3);
  print(soma);  // Saída: 8
}

Funções Anônimas

O Dart suporta funções anônimas (também conhecidas como expressões lambda ou closures), que podem ser úteis para funcionalidades curtas e imediatas. Veja como usar uma função anônima com o método forEach de uma lista:

void main() {
  var frutas = ['maçã', 'banana', 'cereja'];
  frutas.forEach((item) {
    print(item);
  });
  // Saída:
  // maçã
  // banana
  // cereja
}

Sintaxe de Seta para Funções de Única Expressão

Para funções que contêm apenas uma única expressão, o Dart oferece uma sintaxe concisa usando a notação “seta” (=>). Isso é especialmente útil para funções curtas ou ao passar funções como argumentos:

int quadrado(int num) => num * num;

void main() {
  print(quadrado(4));  // Saída: 16
}

Usando Bibliotecas de Terceiros

Para funcionalidades mais complexas ou especializadas, os programadores de Dart frequentemente dependem de bibliotecas de terceiros. Considere a biblioteca http para fazer solicitações HTTP. Primeiro, adicione http ao seu arquivo pubspec.yaml em dependências:

dependencies:
  http: ^0.13.3

Então, você pode usá-la para buscar dados da web:

import 'package:http/http.dart' as http;

Future<void> fetchUserData() async {
  var response = await http.get(Uri.parse('https://api.example.com/users/1'));
  print(response.body);
}

void main() {
  fetchUserData();
  // Saída esperada: Dados JSON do usuário. A saída real dependerá da resposta da API.
}

Lembre-se, ao organizar seu código Dart em funções, pense em reutilização, clareza e no princípio da responsabilidade única. Isso não apenas torna o seu código mais limpo, mas também mais fácil para outros (e para você no futuro) entenderem e manterem.