1
resposta

[Projeto] Desafio: lista de exercícios [Exercício 1]

Vou colocar aqui minha solução para o Execício 1 do desafio. Implementei uma função síncrona e assícrona onde o bot conta até o valaor informado pelo usuário.

class Count {
  String question;
  bool isThisCount = false;
  String robotBot = 'RobotBot:\n';

  Count({required this.question});

  bool isThisCountQuestion() {
    if (question.contains(RegExp('(C|c)ont(e|ar)'))) {
      isThisCount = true;
    }
    return isThisCount;
  }

  Future countToAsync() async {
    print('$robotBot Contador assíncrono');
    int value = 1;
    try {
      String? str = RegExp('[1-9]([0-9])*').stringMatch(question);
      if (str != null) value = int.parse(str);
    } catch (e) {
      print('Valor inválido para contagem!');
    }

    int i = 1;
    while (i <= value) {
      await Future.delayed(Duration(seconds: 1));
      print('                   ${i++}');
    }
  }

  void countToSync() {
    print('$robotBot Contador síncrono');
    int value = 1;
    try {
      String? str = RegExp('[1-9]([0-9])*').stringMatch(question);
      if (str != null) value = int.parse(str);
    } catch (e) {
      print('Valor inválido para contagem!');
    }

    int i = 1;
    while (i <= value) {
      print('                   ${i++}');
    }
  }
}

Aqui as linhas de código adicionadas no KakoBot

if (Count(question: usuario).isThisCountQuestion()) {
      countdownToClose.pause();
      await Count(question: usuario).countToAsync();
      Count(question: usuario).countToSync();
      countdownToClose.resume();
    }

Link do GitHub do projeto robotBot.

1 resposta

Olá, Antonio! Tudo bem?

Primeiro te peço desculpas pela demora em responder.

Parabéns pelo projeto! Parece estar tudo certo, ficamos feliz que tenha compartilhado.

Se tiver alguma dúvida, conte conosco. Bons estudos!