Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] Adicionar timer para inatividade

Olá, Minha dúvida é como conseguir aplicar o timer. Aparentemente alguém respondeu porém ainda sim não ficou claro, pra mim, esse processo.

1 resposta
solução!

Oi Rafael, tudo bem?

Na parte da opinião do instrutor, tem o código que ele criou e deixou para que as pessoas estudantes tivessem uma ideia de como fazer, não sei se você chegou a conferir, irei explicar o que esse código faz e seus detalhes.

Vamos analisar o código e entender a implementação passo a passo.

  1. Importações:

    import 'dart:io';
    import 'questions/good_manners.dart';
    import 'questions/time_questions.dart';
    import 'timing/waiting_time.dart';
    
    • A primeira linha importa a biblioteca dart:io, que fornece funcionalidades de entrada e saída, incluindo stdin para leitura de entrada.
    • As linhas seguintes importam classes ou funcionalidades específicas que estão em arquivos separados.
  2. Função Principal (main):

    void main() async{
    
    • A função principal do programa.
  3. Variáveis:

    String kakoBot = 'KakoBOT:\n';
    var a = true;
    String usuario = '';
    
    • kakoBot: Uma string inicializada com "KakoBOT:\n".
    • a: Uma variável booleana inicializada como verdadeira.
    • usuario: Uma string para armazenar a entrada do usuário.
  4. Stream e Subscriber:

    var myStream = BotClock().kakoBotStream(1,10);
    var subscriber = myStream.listen((event) {
      print('                      KakoBot está ativo a: $event segundos');
    },onDone: (){
      print('KakoBot está sendo finalizado! Faça a última pergunta.');
      a = false;
    });
    
    • Uma instância de BotClock é criada para obter um stream chamado myStream usando o método kakoBotStream.
    • Um subscriber é criado para escutar eventos no stream.
    • Cada vez que um evento ocorre (a cada segundo), a mensagem é impressa indicando por quanto tempo o KakoBot está ativo.
    • Quando o stream está concluído (o método onDone é chamado), uma mensagem é impressa e a variável a é definida como falsa, indicando que o KakoBot está sendo finalizado.
  5. Início do KakoBot:

    print('-- Iniciando o KakoBOT, aguarde..--');
    await BotClock().clock(3);
    print('KakoBOT:\n Oi :) \n Como posso ajudar?');
    
    • Mensagens de início do KakoBot indicando que está sendo iniciado e pedindo ao usuário para aguardar.
    • A função clock é chamada com um argumento de 3 segundos para simular uma espera.
  6. Loop de Perguntas:

    do {
      usuario = stdin.readLineSync().toString();
      // ...
    } while (a);
    
    • Um loop do-while que continua enquanto a é verdadeira (enquanto o KakoBot está ativo).
    • O programa lê a entrada do usuário usando stdin.readLineSync().
    • Dependendo da entrada do usuário, diferentes condições são verificadas para determinar a resposta do KakoBot.
  7. Condições de Resposta do KakoBot:

    • Se o usuário digitar uma saudação de despedida, o KakoBot se despede e o loop é encerrado.
    • Se a pergunta do usuário estiver relacionada ao tempo, a classe TimeQuestions é usada para lidar com isso.
    • Se a pergunta do usuário estiver relacionada às boas maneiras, a classe GoodManners é usada.
    • Caso contrário, uma mensagem padrão é exibida indicando que o KakoBot não foi treinado para responder a essa pergunta.
  8. Fim do Programa:

    print('--Encerrando KakoBOT--');
    
    • Mensagem indicando o encerramento do KakoBot.

Protinho, esse é o desafio detalhado deixado pela pessoa instrutora.

Espero ter te ajudado.

Um abraço e bons estudos.