Skip to content

Commit 525b914

Browse files
committed
feat: added chat functionality, user will get answers based on old conversation
1 parent 875763f commit 525b914

File tree

3 files changed

+31
-19
lines changed

3 files changed

+31
-19
lines changed

lib/providers/gemini_chat_provider.dart

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,8 @@
1-
import 'dart:developer';
2-
31
import 'package:flutter/material.dart';
2+
import 'package:flutter_gemini/flutter_gemini.dart';
43
import 'package:flutter_riverpod/flutter_riverpod.dart';
54
import 'package:flutter_chat_types/flutter_chat_types.dart' as types;
65
import 'package:convogen/providers/app_settings_provider.dart';
7-
import 'package:google_gemini/google_gemini.dart';
86

97
var geminiChatProvider =
108
StateNotifierProvider<GeminiChatProvider, GeminiChatState>(
@@ -19,6 +17,7 @@ class GeminiChatState {
1917
types.User(id: '1', firstName: 'Gemini', role: types.Role.user),
2018
types.User(id: '2', firstName: 'User', role: types.Role.user)
2119
];
20+
2221
const GeminiChatState(
2322
{required this.isLoading,
2423
required this.messages,
@@ -82,14 +81,19 @@ class GeminiChatProvider extends StateNotifier<GeminiChatState> {
8281
text: prompt,
8382
createdAt: DateTime.now().millisecondsSinceEpoch));
8483
state = state.copyWith(isTyping: true);
85-
var gemini =
86-
GoogleGemini(apiKey: ref.read(appSettingsProvider).geminiApiKey);
87-
var res = await gemini.generateFromText(prompt);
88-
log(res.toString());
84+
85+
var chats = state.messages.map((dynamic e) => Content(
86+
parts: [Parts(text: e.text)],
87+
role: e.author == state.users[1] ? 'model' : 'user'));
88+
var flutterGemini =
89+
Gemini.init(apiKey: ref.read(appSettingsProvider).geminiApiKey);
90+
91+
var res = await flutterGemini.chat(chats.toList().reversed.toList());
8992
addMessage(types.TextMessage(
9093
author: state.users[1],
9194
id: DateTime.now().toString(),
92-
text: res.text,
95+
// text: res!.content!.parts!.map((e) => e.text).join("\n"),
96+
text: res?.output ?? "Unable to proceed",
9397
createdAt: DateTime.now().millisecondsSinceEpoch));
9498
state = state.copyWith(isTyping: false);
9599
}

pubspec.lock

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -273,6 +273,14 @@ packages:
273273
url: "https://pub.dev"
274274
source: hosted
275275
version: "3.0.0"
276+
dio:
277+
dependency: transitive
278+
description:
279+
name: dio
280+
sha256: "49af28382aefc53562459104f64d16b9dfd1e8ef68c862d5af436cc8356ce5a8"
281+
url: "https://pub.dev"
282+
source: hosted
283+
version: "5.4.1"
276284
equatable:
277285
dependency: transitive
278286
description:
@@ -342,6 +350,14 @@ packages:
342350
url: "https://pub.dev"
343351
source: hosted
344352
version: "2.1.0"
353+
flutter_gemini:
354+
dependency: "direct main"
355+
description:
356+
name: flutter_gemini
357+
sha256: "1e106f4644d1bc3b1806c9fbf0b6399873b16041d61ea12e3fc229f23f3aa067"
358+
url: "https://pub.dev"
359+
source: hosted
360+
version: "2.0.3"
345361
flutter_link_previewer:
346362
dependency: transitive
347363
description:
@@ -445,14 +461,6 @@ packages:
445461
url: "https://pub.dev"
446462
source: hosted
447463
version: "6.1.0"
448-
google_gemini:
449-
dependency: "direct main"
450-
description:
451-
name: google_gemini
452-
sha256: "8cf19c909e5bfb0518391f4d538251f29e3283caa021249b76afcd69b2963e26"
453-
url: "https://pub.dev"
454-
source: hosted
455-
version: "0.0.9"
456464
graphs:
457465
dependency: transitive
458466
description:

pubspec.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
name: convogen
2-
description: "A new Flutter project."
2+
description: "A AI Chatbot based on Google's Gemini."
33
# The following line prevents the package from being accidentally published to
44
# pub.dev using `flutter pub publish`. This is preferred for private packages.
55
publish_to: "none" # Remove this line if you wish to publish to pub.dev
@@ -16,7 +16,7 @@ publish_to: "none" # Remove this line if you wish to publish to pub.dev
1616
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
1717
# In Windows, build-name is used as the major, minor, and patch parts
1818
# of the product and file versions while build-number is used as the build suffix.
19-
version: 1.0.0+2
19+
version: 1.0.1
2020

2121
environment:
2222
sdk: ">=3.2.3 <4.0.0"
@@ -37,7 +37,6 @@ dependencies:
3737
flutter_chat_ui: ^1.6.10
3838
flutter_chat_types: ^3.6.2
3939
provider: ^6.1.1
40-
google_gemini: ^0.0.9
4140
flutter_riverpod: ^2.4.9
4241
riverpod_annotation: ^2.3.3
4342
shared_preferences: ^2.2.2
@@ -49,6 +48,7 @@ dependencies:
4948
google_fonts: ^6.1.0
5049
flutter_svg: ^2.0.9
5150
go_router: ^13.0.0
51+
flutter_gemini: ^2.0.3
5252

5353
dev_dependencies:
5454
flutter_test:

0 commit comments

Comments
 (0)