Criei um projeto um pouco diferente, não foi exatamente a proposta e obviamente poderia ser melhor mas era a ideia que queria passar kkkk
import 'dart:io';
void main() {
Group gp = Group();
User joao = User(name: 'Joao');
User maria = User(name: 'Mariana');
gp.addUsers([joao,maria]);
Future futureObj = Future(() => 'Iniciando conversa...').then((value) async {
print(value);
await groupChat(gp).then((value) => print(value));
});
}
Future groupChat(Group group) async {
try {
print('type \'end\' to end the group chat\n\n');
bool leaveChat = false;
while(leaveChat == false){
for(int i = 0; i < group.getUsers.length; ++i){
// print('${group.getUsers[i].getName} is typing...');
leaveChat = group.sendMessageOnChat(group.getUsers[i], group.getUsers[i].sendMessage());
Future.delayed(Duration(seconds: 2));
if(leaveChat == true) {
print('terminando conversa...');
Future.delayed(Duration(seconds: 3));
return 'conversa terminada';
}
}
}
} catch (e) {
print('an error has occurred: ' + e.toString());
}
}
class User {
final String name;
User({required this.name});
String get getName => name;
String sendMessage() {
String? msg = stdin.readLineSync();
// return msg != null ? msg : '';
if(msg !=null) {
return msg;
}
return '';
}
}
class Group {
List<User> usersList = [];
List<User> get getUsers => usersList;
bool sendMessageOnChat (User user,String msg) {
if(msg != 'end') {
print('${user.getName}: ' + msg);
return false;
}
return true;
}
void addUsers(List<User> list) => usersList.addAll(list);
void addUser(User user) => usersList.add(user);
}