generateChatbotBloc static method
Implementation
static String generateChatbotBloc() {
return '''
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:equatable/equatable.dart';
import 'chatbot_event.dart';
import 'chatbot_state.dart';
import '../services/chatbot_service.dart';
import '../models/chat_message_model.dart';
class ChatbotBloc extends Bloc<ChatbotEvent, ChatbotState> {
final ChatbotService chatbotService;
ChatbotBloc({required this.chatbotService}) : super(const ChatbotInitial()) {
on<InitializeChatEvent>(_onInitializeChat);
on<SendMessageEvent>(_onSendMessage);
}
Future<void> _onInitializeChat(
InitializeChatEvent event,
Emitter<ChatbotState> emit,
) async {
final welcomeMessage = ChatMessage(
text: 'Hello! I\\'m your AI assistant powered by Google Gemini. How can I help you today?',
isUser: false,
);
emit(ChatbotInitial(messages: [welcomeMessage]));
}
Future<void> _onSendMessage(
SendMessageEvent event,
Emitter<ChatbotState> emit,
) async {
final currentMessages = List<ChatMessage>.from(state.messages);
// Add user message
final userMessage = ChatMessage(
text: event.message,
isUser: true,
);
currentMessages.add(userMessage);
emit(ChatbotMessageSent(messages: currentMessages));
emit(ChatbotLoading(messages: currentMessages));
try {
// Convert to Gemini format
final geminiMessages = currentMessages
.map((msg) => msg.toGeminiModel())
.toList();
// Get response from service
final response = await chatbotService.sendMessage(geminiMessages);
// Add AI response
final aiMessage = ChatMessage(
text: response,
isUser: false,
);
currentMessages.add(aiMessage);
emit(ChatbotResponseReceived(messages: currentMessages));
} catch (e) {
emit(ChatbotError(
message: 'Sorry, I encountered an error. Please try again.',
messages: currentMessages,
));
}
}
}
''';
}