nchat 0.0.2 copy "nchat: ^0.0.2" to clipboard
nchat: ^0.0.2 copied to clipboard

A pure Dart/Flutter chat SDK for NBase platform with real-time messaging, GraphQL API, Socket.IO support, and multi-region capabilities.

example/lib/main.dart

import 'package:nchat/nchat.dart';

/// NChat SDK 사용 예제
void main() async {
  // 1. NChat 인스턴스 생성
  final nchat = NChat();

  try {
    // 2. SDK 초기화
    print('Initializing...');
    final initialize = await nchat.initialize(
      projectId: 'YOUR_PROJECT_ID',
      region: 'kr',
      language: 'ko',
    );
    print('✅ Initialized: ${initialize.platform}');

    // 3. 이벤트 핸들러 등록
    nchat.addHandler('example_handler', ExampleChatHandler());

    // 4. 사용자 연결
    print('\nConnecting...');
    final user = await nchat.connect(
      userId: 'test_user_${DateTime.now().millisecondsSinceEpoch}',
      name: 'Test User',
      profile: 'https://example.com/avatar.jpg',
    );
    print('✅ Connected: ${user.name} (ID: ${user.id})');

    // 5. 채널 생성
    print('\nCreating channel...');
    final channel = await nchat.createChannel(
      type: 'PUBLIC',
      name: 'Test Channel',
      customField: '{"description": "This is a test channel"}',
    );
    print('✅ Channel created: ${channel.name} (ID: ${channel.id})');

    // 6. 채널 구독
    print('\nSubscribing to channel...');
    await nchat.subscribe(channel.id);
    print('✅ Subscribed to channel');

    // 7. 메시지 전송
    print('\nSending message...');
    final message = await nchat.sendMessage(
      channelId: channel.id,
      content: 'Hello, NChat!',
      type: 'TEXT',
    );
    print('✅ Message sent: ${message.content}');

    // 8. 메시지 조회
    print('\nFetching messages...');
    final messageData = await nchat.getMessages(
      filter: {'channelId': channel.id},
      sort: {'created_at': -1},
      options: {'limit': 10},
    );
    print('✅ Total messages: ${messageData.totalCount}');
    for (var msg in messageData.messages) {
      print('  - ${msg.sender?.name ?? "Unknown"}: ${msg.content}');
    }

    // 9. 채널 목록 조회
    print('\nFetching channels...');
    final channelData = await nchat.getChannels(
      filter: {'subscribed': true},
      sort: {'created_at': -1},
      options: {'limit': 10},
    );
    print('✅ Total channels: ${channelData.totalCount}');
    for (var ch in channelData.channels) {
      print('  - ${ch.name} (Type: ${ch.type})');
    }

    // 10. 대기 (실시간 이벤트 수신을 위해)
    print('\nListening for events... (Press Ctrl+C to exit)');
    await Future.delayed(Duration(seconds: 30));

    // 11. 정리
    print('\nCleaning up...');
    await nchat.unsubscribe(channel.id);
    await nchat.disconnect();
    print('✅ Disconnected');
  } catch (e) {
    print('❌ Error: $e');
  }
}

/// 예제 ChatHandler 구현
class ExampleChatHandler extends SimpleChatHandler {
  @override
  void onMessageReceived(Message message) {
    print('📨 New message from ${message.sender?.name}: ${message.content}');
  }

  @override
  void onConnected() {
    print('🔌 Socket connected!');
  }

  @override
  void onDisconnected(String reason) {
    print('🔌 Socket disconnected: $reason');
  }

  @override
  void onErrorReceived(String error) {
    print('❌ Socket error: $error');
  }

  @override
  void onMemberJoined(Member member) {
    print('👋 Member joined: ${member.name}');
  }

  @override
  void onMemberLefted(Member member) {
    print('👋 Member left: ${member.name}');
  }

  @override
  void onStartTyping(String option) {
    print('⌨️ Someone is typing...');
  }

  @override
  void onStopTyping(String option) {
    print('⌨️ Typing stopped');
  }
}
0
likes
120
points
12
downloads

Publisher

verified publishernbase.io

Weekly Downloads

A pure Dart/Flutter chat SDK for NBase platform with real-time messaging, GraphQL API, Socket.IO support, and multi-region capabilities.

Repository (GitHub)
View/report issues

Documentation

API reference

License

unknown (license)

Dependencies

device_info_plus, dio, equatable, flutter, flutter_local_notifications, freezed_annotation, gql, graphql_flutter, http, http_parser, json_annotation, meta, rxdart, socket_io_client

More

Packages that depend on nchat

Packages that implement nchat