๐ AI Chat Plus ๐
A powerful Flutter package for AI chat integration with OpenAI, Google Gemini, and Claude AI
AI Chat Plus
๐ Experience the future of chat interfaces with AI Chat Plus - where intelligent chat meets modern design. Featuring seamless AI integration, real-time interactions, and multiple provider support. Built with Flutter, powered by cutting-edge AI.
๐ฑ Live Demos
Repository demo assets and example apps:
- Repository
- Simple Chat Example
- AI Integration Example
- Customizable Chat UI Example
- Prebuilt Simple Chat UI Example
Demo GIFs are stored in the repository for local preview, but they are not required in the published package.
โจ Crafted by Jamalihassan0307
Transform your chat experience with:
- โก Real-time AI interactions with typing indicators
- ๐ค Multiple AI providers (OpenAI, Gemini, Claude)
- ๐ Seamless provider switching
- ๐ฑ Clean and efficient message handling
- โจ Type-safe API implementation
- ๐ก๏ธ Robust error handling
- ๐จ Fully customizable themes and UI components
- ๐ Message persistence (Coming Soon)
๐จโ๐ป Developer Contact
- Creator: Jam Ali Hassan
- Portfolio: View Portfolio
- Email: jamalihassan0307@gmail.com
- LinkedIn: Connect on LinkedIn
Key Features
1. AI Integration - Multiple Provider Support
// Initialize OpenAI
final openAIConfig = AIModelConfig(
provider: AIProvider.openAI,
apiKey: 'YOUR_OPENAI_API_KEY',
modelId: OpenAIModel.gpt5.modelId,
);
// Initialize Gemini
final geminiConfig = AIModelConfig(
provider: AIProvider.gemini,
apiKey: 'YOUR_GEMINI_API_KEY',
modelId: GeminiModel.gemini35Flash.modelId,
);
// Initialize Claude
final claudeConfig = AIModelConfig(
provider: AIProvider.claude,
apiKey: 'YOUR_CLAUDE_API_KEY',
modelId: ClaudeModel.claude4Sonnet.modelId,
);
2. Efficient Message Handling
AIChat(
apiKey: 'YOUR_API_KEY',
provider: AIProvider.gemini,
modelId: GeminiModel.gemini35Flash.modelId,
onError: (error) {
print('Error: $error');
},
)
3. Type-Safe Implementation
CustomChatUI(
messages: messages,
onSendMessage: handleMessage,
isTyping: isTyping,
onError: handleError,
)
๐ Comprehensive Examples
Explore our detailed examples to get started quickly:
๐ฏ Simple Chat Implementation
๐ Location: example/simple_chat/main.dart
// Quick start with minimal setup
AIChat(
apiKey: 'YOUR_API_KEY',
provider: AIProvider.gemini,
modelId: GeminiModel.gemini35Flash.modelId,
)
๐ค AI Integration Examples
๐ Location: example/ai_integration/
- Main App:
main.dart- Navigation between AI providers - OpenAI Chat:
pages/openai_page.dart- GPT integration - Gemini Chat:
pages/gemini_page.dart- Google Gemini - Claude Chat:
pages/claude_page.dart- Anthropic Claude
๐จ Customizable Chat UI
๐ Location: example/customizable_chatui/
- Main App:
main.dart- Custom theme showcase - Home Page:
pages/home_page.dart- Theme selection - Custom Chat:
pages/chat_pages/custom_chat_page.dart- Full customization - Settings:
pages/chat_pages/chat_settings_page.dart- Theme configuration
๐ Prebuilt Simple Chat UI
๐ Location: example/prebuilt_simple_chatui/
- Main App:
main.dart- App setup - Test Chat:
test_chat_page.dart- Ready-to-use chat interface
Features
โ Currently Implemented:
- ๐ค OpenAI GPT Integration (GPT-5, GPT-5 Mini, GPT-5 Nano)
- ๐ง Google Gemini Integration (Gemini 3.5 Flash, Gemini 3.5 Pro, Gemini 3.5 Flash Lite)
- ๐ง Claude AI Integration (Claude 4 Sonnet, Opus, Haiku)
- ๏ฟฝ๐ Streaming responses support
- ๐ฏ Type-safe API implementation
- โก Fast and efficient message handling
- ๐ Real-time provider switching
- โจ๏ธ Typing indicators and animations
- ๐จ Enhanced error handling and recovery
- ๐จ Customizable themes and UI components
- ๐ฑ Multiple chat UI options (Simple, Custom, Prebuilt)
- ๐ Cross-platform support (Android, iOS, Web)
- ๐ก๏ธ Secure API key management
๐ Coming Soon:
- ๐พ Message Storage & Persistence
- ๐ฅ Firebase Firestore integration
- ๐ฑ Local SQLite storage
- โ๏ธ Cloud sync capabilities
- ๐ Chat history management
- ๐ค Voice Features
- ๐ฃ๏ธ Speech-to-text integration
- ๐ Text-to-speech responses
- ๐ต Voice message support
- ๐ File & Media Support
- ๐ File attachments
- ๐ผ๏ธ Image sharing and analysis
- ๐ Document processing
- ๐ Advanced Features
- ๐ Message search functionality
- ๐ท๏ธ Chat categorization and tagging
- ๐ Usage analytics and insights
- ๐ Multi-language support
- ๐ฎ Enhanced UI/UX
- ๐ Dark/Light theme auto-switching
- ๐ฑ Adaptive design improvements
- โจ Animation enhancements
- ๐จ More theme presets
Usage
Basic Setup
Add this to your package's pubspec.yaml file:
dependencies:
ai_chat_plus: ^1.2.3
Then run:
flutter pub get
Using OpenAI Service
import 'package:ai_chat_plus/ai_chat_plus.dart';
Future<void> initOpenAI() async {
final config = AIModelConfig(
provider: AIProvider.openAI,
apiKey: 'YOUR_OPENAI_API_KEY',
modelId: OpenAIModel.gpt41.modelId,
);
final aiService = AIServiceFactory.createService(AIProvider.openAI);
await aiService.initialize(config);
// Generate response
final response = await aiService.generateResponse("Hello, how are you?");
print(response);
}
Using Gemini Service
import 'package:ai_chat_plus/ai_chat_plus.dart';
Future<void> initGemini() async {
final config = AIModelConfig(
provider: AIProvider.gemini,
apiKey: 'YOUR_GEMINI_API_KEY',
modelId: GeminiModel.gemini25Flash.modelId,
);
final aiService = AIServiceFactory.createService(AIProvider.gemini);
await aiService.initialize(config);
// Generate response
final response = await aiService.generateResponse("What is quantum computing?");
print(response);
}
Using Claude Service
import 'package:ai_chat_plus/ai_chat_plus.dart';
Future<void> initClaude() async {
final config = AIModelConfig(
provider: AIProvider.claude,
apiKey: 'YOUR_CLAUDE_API_KEY',
modelId: ClaudeModel.claude4Sonnet.modelId,
);
final aiService = AIServiceFactory.createService(AIProvider.claude);
await aiService.initialize(config);
// Generate response
final response = await aiService.generateResponse("What is artificial intelligence?");
print(response);
}
Creating a Chat Application
To create a chat application with both OpenAI and Gemini support:
- Create separate pages for each service:
// Create OpenAI chat page
class OpenAIChatPage extends StatefulWidget {
// ... implementation in example/pages/openai_page.dart
}
// Create Gemini chat page
class GeminiChatPage extends StatefulWidget {
// ... implementation in example/pages/gemini_page.dart
}
- Set up navigation between services:
class ChatScreen extends StatefulWidget {
@override
State<ChatScreen> createState() => _ChatScreenState();
}
class _ChatScreenState extends State<ChatScreen> {
int _selectedIndex = 0;
final List<Widget> _pages = [
const GeminiChatPage(),
const OpenAIChatPage(),
];
@override
Widget build(BuildContext context) {
return Scaffold(
body: _pages[_selectedIndex],
bottomNavigationBar: BottomNavigationBar(
items: const <BottomNavigationBarItem>[
BottomNavigationBarItem(
icon: Icon(Icons.psychology),
label: 'Gemini',
),
BottomNavigationBarItem(
icon: Icon(Icons.chat_bubble),
label: 'OpenAI',
),
],
currentIndex: _selectedIndex,
onTap: (index) => setState(() => _selectedIndex = index),
),
);
}
}
๐ Prebuilt Chat UI - Quick Start
Get started in minutes with our prebuilt chat interface:
AIChat(
apiKey: 'YOUR_API_KEY',
provider: AIProvider.gemini,
modelId: GeminiModel.gemini25Flash.modelId,
primaryColor: Theme.of(context).primaryColor,
backgroundColor: Colors.grey[100],
// Provider switching
onProviderChanged: (AIProvider newProvider) {
return AIModelConfig(
provider: newProvider,
apiKey: getApiKeyForProvider(newProvider),
modelId: getDefaultModelForProvider(newProvider),
);
},
// Error handling
onError: (error) {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text(error.toString())),
);
},
)
๐จ Custom Chat UI - Full Control
For complete customization, use our custom chat components:
CustomChatUI(
messages: _messages,
onSendMessage: _handleSendMessage,
isTyping: _isTyping,
theme: ChatTheme(
primaryColor: Colors.purple,
backgroundColor: const Color(0xFFF0F0F0),
userBubbleGradient: const LinearGradient(
colors: [Colors.purple, Colors.deepPurple],
),
aiBubbleColor: Colors.white,
bubbleRadius: 20,
// ... more customization options
),
userAvatarUrl: 'https://example.com/user-avatar.png',
aiAvatarUrl: 'https://example.com/ai-avatar.png',
enableAttachments: true,
)
๐ฑ Multi-Provider Chat App
Create an app with multiple AI providers:
class ChatApp extends StatefulWidget {
@override
State<ChatApp> createState() => _ChatAppState();
}
class _ChatAppState extends State<ChatApp> {
AIProvider _currentProvider = AIProvider.gemini;
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('AI Chat Plus'),
actions: [
PopupMenuButton<AIProvider>(
onSelected: (provider) {
setState(() => _currentProvider = provider);
},
itemBuilder: (context) => [
PopupMenuItem(value: AIProvider.openAI, child: Text('OpenAI')),
PopupMenuItem(value: AIProvider.gemini, child: Text('Gemini')),
PopupMenuItem(value: AIProvider.claude, child: Text('Claude')),
],
),
],
),
body: AIChat(
apiKey: _getApiKey(_currentProvider),
provider: _currentProvider,
modelId: _getDefaultModel(_currentProvider),
),
);
}
}
๐ง Key Features
Prebuilt UI Features:
- ๐ Built-in provider switching (OpenAI, Gemini, Claude)
- ๐จ Customizable themes and colors
- ๐จ Error handling and loading states
- ๐ฌ Message bubble customization
- โจ๏ธ Input field styling
- ๐ฑ Responsive design
Custom UI Features:
- ๐๏ธ Complete theme control
- ๐ค Custom avatars and profiles
- ๐ Attachment support
- โจ Animation customization
- ๐ Gradient backgrounds
- ๐ Flexible layouts
For detailed implementation examples, check:
- Simple Usage:
example/simple_chat/ - AI Integration:
example/ai_integration/ - Custom Themes:
example/customizable_chatui/ - Prebuilt UI:
example/prebuilt_simple_chatui/
๐ API Documentation
๐ API Keys Setup
- OpenAI API Key: Get from OpenAI Platform
- Gemini API Key: Get from Google AI Studio
- Claude API Key: Get from Claude AI Platform
๐ค Available Models
OpenAI Models:
OpenAIModel.gpt41- Most capable modelOpenAIModel.gpt41Mini- Balanced speed and costOpenAIModel.gpt41Nano- Lowest latency
Gemini Models:
GeminiModel.gemini25Flash- Fast responsesGeminiModel.gemini25Pro- Balanced performanceGeminiModel.gemini25FlashLite- Lowest-cost option
Claude Models:
ClaudeModel.claude4Haiku- Fast and lightweightClaudeModel.claude4Sonnet- Balanced performanceClaudeModel.claude4Opus- Most capable Claude model
๐ก๏ธ Security Best Practices
// โ
Good: Use environment variables
final apiKey = const String.fromEnvironment('OPENAI_API_KEY');
// โ Bad: Hardcoded API keys
final apiKey = 'sk-your-actual-key-here'; // Never do this!
// โ
Good: Error handling
try {
final response = await aiService.generateResponse(message);
// Handle success
} catch (e) {
// Handle error gracefully
print('Error: $e');
}
// โ
Good: Proper cleanup
@override
void dispose() {
aiService.dispose();
super.dispose();
}
๐ง Advanced Configuration
// Custom service configuration
final config = AIModelConfig(
provider: AIProvider.openAI,
apiKey: 'YOUR_API_KEY',
modelId: OpenAIModel.gpt41Mini.modelId,
// Optional: Custom parameters
maxTokens: 2048,
temperature: 0.7,
topP: 1.0,
);
// Initialize service with custom config
final aiService = AIServiceFactory.createService(AIProvider.openAI);
await aiService.initialize(config);
๐ฏ Performance Tips
- Service Reuse: Initialize services once and reuse them
- Proper Disposal: Always dispose services to prevent memory leaks
- Error Handling: Implement robust error handling for better UX
- Streaming: Use streaming for real-time responses where supported
- Model Selection: Choose appropriate models based on your use case
๐ Future Roadmap
Version 1.3.0 (Next Release)
- ๐ฅ Firebase Firestore integration for message persistence
- ๐ฑ Local SQLite storage for offline capabilities
- ๐ค Voice message recording and playback
- ๐ท Image upload and analysis support
Version 1.4.0 (Upcoming)
- ๐ Advanced search functionality
- ๐ท๏ธ Message categorization and tagging
- ๐ Usage analytics and insights
- ๐ Multi-language support
Version 1.5.0 (Future)
- ๐จ Enhanced theme system with more presets
- ๐ค Custom AI model integration support
- ๐ฑ Improved mobile responsiveness
- โก Performance optimizations
๐ค Contributing
We welcome contributions! Please see our Contributing Guidelines for details.
Ways to Contribute:
- ๐ Report bugs and issues
- ๐ก Suggest new features
- ๐ Improve documentation
- ๐งช Add tests
- ๐จ Enhance UI/UX
๐ Support & Community
- ๐ Issues: GitHub Issues
- ๐ฌ Discussions: GitHub Discussions
- ๐ง Email: jamalihassan0307@gmail.com
- ๐ฆ Follow Updates: GitHub
โญ Show Your Support
If you find AI Chat Plus helpful, please:
- โญ Star the repository on GitHub
- ๐ Like the package on pub.dev
- ๐ข Share with other developers
- ๐ Consider sponsoring the project
๐ License
This project is licensed under the MIT License - see the LICENSE file for details.
๐จโ๐ป About the Developer
Jam Ali Hassan
Passionate Flutter developer creating innovative solutions for the mobile development community.
๐ง Email: jamalihassan0307@gmail.com
Made with โค๏ธ by Jam Ali Hassan
ยฉ 2024 AI Chat Plus. All rights reserved.