Skip to content

Instantly share code, notes, and snippets.

@ibtesam123
Last active October 10, 2022 07:33
Show Gist options
  • Save ibtesam123/e80d38fc47f6be595fb52b426ab911e7 to your computer and use it in GitHub Desktop.
Save ibtesam123/e80d38fc47f6be595fb52b426ab911e7 to your computer and use it in GitHub Desktop.
Realtime Chat-II
import 'package:scoped_model/scoped_model.dart';
import 'package:flutter_socket_io/flutter_socket_io.dart';
import 'package:flutter_socket_io/socket_io_manager.dart';
import 'dart:convert';
import './User.dart';
import './Message.dart';
class ChatModel extends Model {
List<User> users = [
User('IronMan', '111'),
User('Captain America', '222'),
User('Antman', '333'),
User('Hulk', '444'),
User('Thor', '555'),
];
User currentUser;
List<User> friendList = List<User>();
List<Message> messages = List<Message>();
SocketIO socketIO;
void init() {
currentUser = users[0];
friendList =
users.where((user) => user.chatID != currentUser.chatID).toList();
socketIO = SocketIOManager().createSocketIO(
'<ENTER_YOUR_SERVER_URL_HERE>', '/',
query: 'chatID=${currentUser.chatID}');
socketIO.init();
socketIO.subscribe('receive_message', (jsonData) {
Map<String, dynamic> data = json.decode(jsonData);
messages.add(Message(
data['content'], data['senderChatID'], data['receiverChatID']));
notifyListeners();
});
socketIO.connect();
}
void sendMessage(String text, String receiverChatID) {
messages.add(Message(text, currentUser.chatID, receiverChatID));
socketIO.sendMessage(
'send_message',
json.encode({
'receiverChatID': receiverChatID,
'senderChatID': currentUser.chatID,
'content': text,
}),
);
notifyListeners();
}
List<Message> getMessagesForChatID(String chatID) {
return messages
.where((msg) => msg.senderID == chatID || msg.receiverID == chatID)
.toList();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment