sendMessage method
Future<String>
sendMessage({
- required String message,
- List<
ChatMessage> conversationHistory = const [], - Map<
String, dynamic> ? options,
override
Send a message and get a complete response
Implementation
@override
Future<String> sendMessage({
required String message,
List<ChatMessage> conversationHistory = const [],
Map<String, dynamic>? options,
}) async {
final contents = _prepareContents(message, conversationHistory);
final response = await http.post(
Uri.parse(_baseUrl),
headers: {'Content-Type': 'application/json'},
body: jsonEncode({
'contents': contents,
'generationConfig': {
'temperature': options?['temperature'] ?? temperature,
'maxOutputTokens': options?['maxTokens'] ?? maxTokens,
},
}),
);
if (response.statusCode == 200) {
final data = jsonDecode(response.body);
final content = data['candidates'][0]['content']['parts'][0]['text'];
_conversationHistory.add({'role': 'user', 'content': message});
_conversationHistory.add({'role': 'model', 'content': content});
return content;
} else {
throw Exception('Gemini API error: ${response.statusCode} - ${response.body}');
}
}