kako_bot.dart
import 'dart:io';
import 'questions/time_questions.dart';
import 'questions/timing/waintg_time.dart';
void main() async {
String kakoBot = 'KakoBOT:\n';
var a = true;
String usuario = '';
var mystream = BotClock().KakoBotStream(1, 10);
var subcriber = mystream.listen(
(event) {
print(
' KAKO BOT está ativo por $event segundos');
},
onDone: () {
print('Kako Bot finanlizou seu trabalho');
a = false;
},
);
print('-- Iniciando o KakoBOT, aguarde..--');
await BotClock().clock(3);
print('KakoBOT:\n Oi :) \n Como posso ajudar?');
do {
usuario = stdin.readLineSync().toString();
print('-- Processando pergunta, aguarde..--');
await BotClock().clock(1);
if (usuario.contains('xau') ||
usuario.contains('Xau') ||
usuario.contains('Adeus') ||
usuario.contains('adeus')) {
a = false;
print(kakoBot + ' Até a proxima!!');
} else if (TimeQuestions(usuario).isThisTime()) {
// verificar antes, assim não fazemos toda a função sem precisar.
TimeQuestions(usuario).timeQuestion();
await BotClock().clock(1);
} else {
await BotClock().clock(2);
print(kakoBot +
' Não fui treinado para responder a essa pergunta \n Desculpe :( ');
print(kakoBot + ' Você pode fazer outra pergunta ou dizer Adeus');
}
} while (a);
print('--Encerrando KakoBOT--');
}
wainth_time.dart
class BotClock {
Future clock(int seconds) {
return Future.delayed(Duration(seconds: seconds));
}
Stream KakoBotStream(int interval, [int? maxCount]) async* {
int i = 1;
while (i != maxCount) {
Future.delayed(Duration(seconds: interval));
yield i++;
}
print('A Stream acabou');
}
}
Print do resultado da execução
Essa é o arquivo streams.dart
import 'dart:async';
void main() async {
Stream myStream(int interval, [int? maxCount]) async* {
int i = 1;
while (i != maxCount) {
print('Contando: $i');
Future.delayed(Duration(seconds: interval));
yield i++;
}
print('A Stream acabou');
}
var kakoStream = myStream(1).asBroadcastStream();
StreamSubscription myStreamSubcription = myStream(1).listen((event) {
if (event.isEven) {
print('Esse número é Even!');
}
}, onError: (e) {
print('Error: $e');
}, onDone: () {
print('Deu certo');
});
kakoStream.map((event) => 'Subscriber 2 watching: $event').listen(print);
await Future.delayed(Duration(seconds: 3));
myStreamSubcription.pause();
print('Stream Pausada');
await Future.delayed(Duration(seconds: 3));
myStreamSubcription.resume();
print('Stream retomada');
await Future.delayed(Duration(seconds: 3));
myStreamSubcription.cancel();
print('Stream cancelada');
print('A main acabou');
}
Alguém pode me ajudar a entender o motivo de não printar igual nas aulas na sessão Stream. Grato.