1
resposta

[Projeto] Lista de exercícios - Validação de métodos de pagamento em uma plataforma de e-commerce

  1. Validação de métodos de pagamento em uma plataforma de e-commerce
import 'dart:async';
import 'dart:io';

void main () {
  String opcaoDePagamento = '';
  List<String> metodoDePagamento = ['cartao', 'boleto', 'paypal', 'pix'];

  void metodosDePagamentos (String opcaoDePagamento) {
    print('Método de pagamento ${opcaoDePagamento.toUpperCase()} aceito.');

  }

  void escolhaDoMetodoDePagamento () {
    print('Digite o metodo de Pagamento: ${metodoDePagamento.join(', ')}');
    String? opcao = stdin.readLineSync();

    if (opcao != null && opcao.isNotEmpty && metodoDePagamento.contains(opcao)) {
      opcaoDePagamento = opcao;
      metodosDePagamentos(opcaoDePagamento);
    } else {
      escolhaDoMetodoDePagamento();
    }
  }

  escolhaDoMetodoDePagamento();

}
1 resposta

Oi Charles,

Seu código está quase perfeito! 👍

A recursão na função escolhaDoMetodoDePagamento funciona, mas pode causar um estouro de pilha se o usuário errar muitas vezes. Uma alternativa seria usar um loop while para manter a solicitação até que uma opção válida seja fornecida.

Além disso, você pode usar um do...while para garantir que a pergunta seja feita pelo menos uma vez. Veja um exemplo:

void escolhaDoMetodoDePagamento() {
  String? opcao;
  do {
    print('Digite o método de Pagamento: ${metodoDePagamento.join(', ')}');
    opcao = stdin.readLineSync();
  } while (opcao == null || opcao.isEmpty || !metodoDePagamento.contains(opcao));

  opcaoDePagamento = opcao;
  metodosDePagamentos(opcaoDePagamento);
}

Essa abordagem evita a recursão e torna o código mais robusto. 💪

Para saber mais: Documentação oficial do Dart sobre loops.

Continue praticando e explorando as possibilidades! 💻