Sobes.tech
Junior

Para que servem os casos no Flutter?

sobes.tech IA

Resposta da IA

Os casos de uso representam uma camada de lógica de negócio separada da interface de utilizador (UI) e dos dados. Descrevem ações específicas do utilizador ou do sistema que são realizadas com dados obtidos dos repositórios.

Vantagens do uso de casos de uso:

  • Claridade e modularidade: Separar as regras de negócio da UI torna o código mais compreensível e fácil de manter.
  • Testabilidade: A lógica de negócio encapsulada nos casos de uso é fácil de testar isoladamente.
  • Reutilização: Os casos de uso podem ser utilizados em diferentes partes da aplicação ou até em outras aplicações.
  • Legibilidade: Os nomes dos casos de uso frequentemente refletem a intenção do utilizador ou do sistema, o que melhora a legibilidade do código.

Normalmente, os casos de uso:

  • Dependem de um ou mais repositórios para obter dados.
  • Realizam operações sobre esses dados (por exemplo, filtragem, ordenação, transformação).
  • Não conhecem a UI e não interagem diretamente com ela.
  • São utilizados por apresentadores ou provedores de estado (por exemplo, BLoC, Riverpod).

Exemplo de estrutura de um caso de uso:

// Classe base abstrata para casos de uso que retornam valores futuros.
abstract class FutureUseCase<T, P> {
  Future<T> call(P params);
}

// Caso de uso concreto para obter uma lista de utilizadores.
class GetUsersUseCase extends FutureUseCase<List<User>, NoParams> {
  final UserRepository userRepository;

  GetUsersUseCase(this.userRepository);

  @override
  Future<List<User>> call(NoParams params) async {
    return await userRepository.getUsers();
  }
}

// Classe sem parâmetros para casos de uso que não requerem dados de entrada.
class NoParams {}