Last active
October 10, 2022 07:33
-
-
Save ibtesam123/e80d38fc47f6be595fb52b426ab911e7 to your computer and use it in GitHub Desktop.
Realtime Chat-II
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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