- Criando a função de depósito e fazendo sua validação
import 'dart:io';
double saldo = 1000.0; // Saldo inicial em reais
// Função recursiva para ler valor positivo
double lerValorPositivo(String mensagem) {
print(mensagem);
String? input = stdin.readLineSync();
double valor = double.tryParse(input!) ?? -1; //?? -1
if (valor <= 0) {
print('\n========================================');
print('Valor inválido! Digite um número positivo.');
return lerValorPositivo(mensagem); // Recursão para nova tentativa
}
return valor;
}
// Função recursiva para ler opção do menu
int lerOpcaoMenu() {
print('\nEscolha uma operação:');
print('1 - PIX (ativo)');
print('2 - Depósito (ativo)');
print('3 - Retirada (indisponível)');
print('4 - Transferência (indisponível)');
print('5 - Pagamento (indisponível)');
print('0 - Sair');
String? input = stdin.readLineSync();
int opcao = int.tryParse(input!) ?? -1;
if (opcao < 0 || opcao > 5) {
print('\n========================================\n');
print('Opção inválida! Tente novamente.');
return lerOpcaoMenu(); // Recursão para nova tentativa
}
return opcao;
}
void main() {
DateTime hoje = DateTime.now(); // Chama a função DateTime.now() para pegar a data do dia
print('====================x====================');
print(' BANCO DIGITAL');
print('Data: ${hoje.day}/${hoje.month}/${hoje.year}');
print('========================================\n');
while (true) {
print('Seu saldo atual é de: R\$${saldo.toStringAsFixed(2)}\n');
int opcao = lerOpcaoMenu();
if (opcao == 0) { // tratamento de saida do menu
print('\nSaindo do sistema...');
break;
}
switch (opcao) {
case 1: // PIX
print('\n--- Operação de PIX ---');
double valorPix = lerValorPositivo('Digite o valor do Pix:');
print('Aguarde, processando...\n');
sleep(Duration(milliseconds: 2000));
if (saldo >= valorPix) {
saldo -= valorPix;
print('Pix realizado! Saldo atual: R\$${saldo.toStringAsFixed(2)}');
} else {
print('\n========================================\n');
print('Saldo insuficiente para o Pix.');
}
break;
case 2: // Depósito
print('\n--- Operação de Depósito ---');
double valorDeposito = lerValorPositivo('Digite o valor do depósito:');
saldo += valorDeposito;
print('Depósito realizado! Saldo atual: R\$${saldo.toStringAsFixed(2)}');
break;
case 3: // Retirada
print('\nOperação de Retirada ainda não está disponível.');
break;
case 4: // Transferência
print('\nOperação de Transferência ainda não está disponível.');
break;
case 5: // Pagamento
print('\nOperação de Pagamento ainda não está disponível.');
break;
}
print('\n========================================');
}
print('\n========================================');
print(' Obrigado por usar o programa!');
print('========================================');
}
- Validação de métodos de pagamento em uma plataforma de e-commerce
import 'dart:io';
void main() {
List<String> formaPagamentos = ['pix', 'boleto', 'cartao', 'paypal', 'bitcoin'];
String? pagamento;
pagamento = validaPagamento(pagamento, formaPagamentos);
print('Pagamento válido: $pagamento');
}
String? validaPagamento(String? pagamento, List<String> pagamentos) {
print('Digite o tipo de pagamento (pix, boleto, cartao, paypal, bitcoin):');
pagamento = stdin.readLineSync();
if (pagamentos.contains(pagamento)) {
return pagamento;
} else {
print('Pagamento inválido. Tente novamente.');
return validaPagamento(pagamento, pagamentos);
}
}