Skip to content

Commit 4f4714c

Browse files
committedMay 22, 2023
chat screen added
1 parent 3b6db98 commit 4f4714c

File tree

2 files changed

+46
-7
lines changed

2 files changed

+46
-7
lines changed
 

‎lib/screens/chat_screen.dart

+40-4
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,12 @@
1+
import 'dart:convert';
2+
3+
import 'package:dio/dio.dart';
14
import 'package:flutter/material.dart';
5+
import 'package:http/http.dart';
26
import 'package:typewritertext/typewritertext.dart';
37
import '../models/chat_models.dart';
8+
import '../network/app_urls.dart';
9+
import '../network/ko_exception.dart';
410
import '../theme/app_theme.dart';
511
import '../utils/constants.dart';
612
import 'package:responsive_sizer/responsive_sizer.dart';
@@ -18,6 +24,31 @@ class _ChatScreenState extends State<ChatScreen> {
1824
final TextEditingController _textController = TextEditingController();
1925
final _scrollController = ScrollController();
2026

27+
Future<void> sendMessage(String message) async {
28+
try {
29+
final response = await post(Uri.parse("${AppUrl.chat}$message"));
30+
debugPrint("--- Chat request ${AppUrl.chat}$message");
31+
32+
if (response.statusCode == 200) {
33+
final dynamic data = json.decode(response.body);
34+
debugPrint("--- Response Data for docs : $data");
35+
_messages.add(ChatMessage(content: data, is_bot_text: true));
36+
} else {
37+
throw Exception(
38+
'Could not parse response. erroe code ${response.statusCode}');
39+
}
40+
} on DioError catch (e) {
41+
if (e.response != null && e.response!.statusCode != null) {
42+
throw KoException(
43+
statusCode: e.response!.statusCode!,
44+
message: e.response!.data.toString(),
45+
);
46+
} else {
47+
throw Exception(e.message);
48+
}
49+
}
50+
}
51+
2152
@override
2253
void initState() {
2354
super.initState();
@@ -33,7 +64,7 @@ class _ChatScreenState extends State<ChatScreen> {
3364
crossAxisAlignment: CrossAxisAlignment.center,
3465
children: [
3566
const CircleAvatar(
36-
backgroundImage: AssetImage('images/profile.jpg'),
67+
backgroundImage: AssetImage('images/app_logo.png'),
3768
radius: 20,
3869
),
3970
SizedBox(
@@ -96,12 +127,15 @@ class _ChatScreenState extends State<ChatScreen> {
96127
disabledBorder: kChatInput,
97128
focusedBorder: kChatInput,
98129
suffixIcon: IconButton(
99-
onPressed: () {
130+
onPressed: () async {
100131
setState(() {
101132
_messages.add(ChatMessage(
102133
content: _textController.text, is_bot_text: false));
103134
isLoading = true;
104135
});
136+
await sendMessage(_textController.text);
137+
138+
setState(() {});
105139
// on recupere la saisie de l'user au sein d'une variable et on vide le texfield
106140
var input = _textController.text;
107141
_textController.clear();
@@ -126,11 +160,13 @@ class _ChatScreenState extends State<ChatScreen> {
126160
child: Container(
127161
color: Colors.grey[600],
128162
child: IconButton(
129-
onPressed: () {
163+
onPressed: () async {
164+
await sendMessage(_textController.text);
130165
// afficher l'entrée de l'utilisateur
131166
setState(() {
132167
_messages.add(ChatMessage(
133168
content: _textController.text, is_bot_text: false));
169+
134170
isLoading = true;
135171
});
136172
// on recupere la saisie de l'user au sein d'une variable et on vide le texfield
@@ -190,7 +226,7 @@ class ChatMessageWidget extends StatelessWidget {
190226
padding: const EdgeInsets.all(15),
191227
child: is_bot_text == true
192228
? Row(
193-
mainAxisAlignment: MainAxisAlignment.end,
229+
mainAxisAlignment: MainAxisAlignment.end,
194230
children: [
195231
Flexible(
196232
child: Container(

‎lib/screens/pdf_screen.dart

+6-3
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,9 @@ class _ChatPdfScreenState extends State<ChatPdfScreen> {
6262

6363
try {
6464
final response = await get(Uri.parse("${AppUrl.loadPdf}$fileLink"));
65+
66+
debugPrint("${AppUrl.loadPdf}$fileLink");
67+
6568
if (response.statusCode == 200) {
6669
final dynamic data = json.decode(response.body);
6770
debugPrint("--- Response Data for docs : $data");
@@ -170,7 +173,7 @@ class _ChatPdfScreenState extends State<ChatPdfScreen> {
170173
children: [
171174
MainButton(
172175
child: Text(
173-
'chat',
176+
'PDF Chat',
174177
style: GoogleFonts.roboto(
175178
color: Colors.white,
176179
fontWeight: FontWeight.bold,
@@ -183,7 +186,7 @@ class _ChatPdfScreenState extends State<ChatPdfScreen> {
183186
),
184187
MainButton(
185188
child: Text(
186-
'chat',
189+
'Summarize Chat',
187190
style: GoogleFonts.roboto(
188191
color: Colors.white,
189192
fontWeight: FontWeight.bold,
@@ -212,7 +215,7 @@ class _ChatPdfScreenState extends State<ChatPdfScreen> {
212215
MaterialPageRoute(
213216
builder: (context) => const QuizScreen())),
214217
child: Text(
215-
'Flash PDF',
218+
'Quiz PDF',
216219
style: GoogleFonts.roboto(
217220
color: Colors.white,
218221
fontWeight: FontWeight.bold,

0 commit comments

Comments
 (0)
Please sign in to comment.