generateChatbotBloc static method

String generateChatbotBloc()

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,
    ));
  }
}
}
''';
}