sm-chat

A Dart package providing utilities for building and managing chat applications. It simplifies common tasks like message formatting, user management, and event handling within a chat environment.

Installation

To use sm-chat in your Dart project, add it as a dependency in your pubspec.yaml file: yaml dependencies: sm_chat: ^1.0.0 # Replace with the latest version

Then, run dart pub get to fetch the package.

Usage Examples

Here are a few examples demonstrating how to use the sm-chat package:

1. Formatting a Chat Message: dart import 'package:sm_chat/sm_chat.dart';

void main() { final message = ChatMessage( senderId: 'user123', content: 'Hello, how are you?', timestamp: DateTime.now(), );

final formattedMessage = message.format(); print(formattedMessage); // Output: User user123: Hello, how are you? (Timestamp) }

2. Managing Users in a Chat Room: dart import 'package:sm_chat/sm_chat.dart';

void main() { final chatRoom = ChatRoom(roomId: 'room456'); chatRoom.addUser('user123'); chatRoom.addUser('user456');

print(chatRoom.getUsers()); // Output: user123, user456

chatRoom.removeUser('user123'); print(chatRoom.getUsers()); // Output: user456 }

3. Handling Chat Events: dart import 'package:sm_chat/sm_chat.dart';

void main() { final chatEventBus = ChatEventBus();

chatEventBus.on

final message = ChatMessage( senderId: 'user789', content: 'This is a new message!', timestamp: DateTime.now(), );

chatEventBus.fire(MessageSentEvent(message)); }

class MessageSentEvent { final ChatMessage message;

MessageSentEvent(this.message); }

4. Creating a Custom Chat Message Type: dart import 'package:sm_chat/sm_chat.dart';

class ImageChatMessage extends ChatMessage { final String imageUrl;

ImageChatMessage({ required String senderId, required DateTime timestamp, required this.imageUrl, }) : super(senderId: senderId, content: 'Image', timestamp: timestamp);

@override String format() { return 'Image from $senderId: $imageUrl'; } }

void main() { final imageMessage = ImageChatMessage( senderId: 'user007', timestamp: DateTime.now(), imageUrl: 'https://example.com/image.jpg', );

print(imageMessage.format()); // Output: Image from user007: https://example.com/image.jpg }

5. Implementing a Simple Chat Service: dart import 'package:sm_chat/sm_chat.dart';

class ChatService { final ChatEventBus eventBus = ChatEventBus();

void sendMessage(String roomId, String senderId, String content) { final message = ChatMessage( senderId: senderId, content: content, timestamp: DateTime.now(), ); eventBus.fire(MessageSentEvent(message)); }

Stream

void main() { final chatService = ChatService(); chatService.onMessageReceived('room123').listen((message) { print('Received message in room123: ${message.content} from ${message.senderId}'); });

chatService.sendMessage('room123', 'user456', 'Hello from user456!'); }

class MessageSentEvent { final ChatMessage message;

MessageSentEvent(this.message); }

Feature Summary

  • ChatMessage: A base class for representing chat messages with sender ID, content, and timestamp.
  • ChatRoom: Manages users within a chat room.
  • ChatEventBus: A simple event bus for handling chat-related events.
  • Extensible: Easily create custom message types and event handlers to fit your specific needs.
  • Utilities: Provides helpful formatting and utility functions for common chat operations.

License

MIT License

This package is part of the sm-chat ecosystem. For advanced features and enterprise-grade tools, visit: https://supermaker.ai/chat/

Libraries

sm_chat