chat_service 1.0.0 chat_service: ^1.0.0 copied to clipboard
Chat Service integrate as customer support for your Flutter Apps.
/*
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:flutter/material.dart';
import 'package:uuid/uuid.dart';
import 'src/constants.dart';
import 'src/model/chat_session.dart';
import 'src/service/service.dart';
import 'src/views/chat_screen.dart';
class ChatPage extends StatefulWidget {
const ChatPage({Key? key}) : super(key: key);
@override
State<ChatPage> createState() => _ChatPageState();
}
class _ChatPageState extends State<ChatPage> {
getData() {
return // your server request code;
}
@override
Widget build(BuildContext context) {
// Best to use streamBuilder to get data.
return StreamBuilder<QuerySnapshot>(
stream: getData(),
builder: (context, snapshot) {
// when no any chat sessions are available
if (!snapshot.hasData || snapshot.data!.docs.isEmpty) {
return ChatScreen(
userId: currentUserId,
screenTitle: "SORRAVL",
// chatSession: chatSession,
onTyping: (b) {},
onSendMessage: (message) {
// if First message. you should create chatsession
var sessionId = const Uuid().v4();
setState(() {
// set sessionID of message as like this
message.sessionId = sessionId;
});
var chatSession = ChatSession(
customerName: "vishnu",
sessionId: sessionId,
customerId: currentUserId,
agentId: agentId,
createdAt: DateTime.now(),
updatedAt: DateTime.now(),
closedAt: null,
sessionStatus: SessionStatus.active,
customerStatus: CustomerStatus.active,
agentStatus: AgentStatus.notPicked,
messages: [message]);
// write your code to upload a chatsession and message to server
},
);
} else {
// when chat sessions are available
var chatSession = // Object from snapshot data
return ChatScreen(
userId: currentUserId,
screenTitle: "SORRAVL",
chatSession: chatSession,
onSendMessage: (message) {
setState(() {
// set sessionID of message as like this
message.sessionId = chatSession.sessionId;
});
chatSession.messages!.add(message);
// write your code to upload a chatsession and message to server
},
onTyping: (isTyping) {
if (isTyping) {
// write your code to update as user is typing to server
} else {
// write your code to update as user is not typing to server
}
},
);
}
},
);
}
}
*/