ai_chat_plus 1.2.3
ai_chat_plus: ^1.2.3 copied to clipboard
A Flutter package by jamalihassan0307 for seamless AI chat integration. Features OpenAI, Gemini, and Claude support with type-safe implementation.
๐ 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 #
๐ก Note: Large GIF files (up to 12MB) may take a moment to load. Click on any demo image to view the full-size version.
โจ 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.gpt35Turbo.modelId,
);
// Initialize Gemini
final geminiConfig = AIModelConfig(
provider: AIProvider.gemini,
apiKey: 'YOUR_GEMINI_API_KEY',
modelId: GeminiModel.geminiFlash.modelId,
);
// Initialize Claude
final claudeConfig = AIModelConfig(
provider: AIProvider.claude,
apiKey: 'YOUR_CLAUDE_API_KEY',
modelId: ClaudeModel.claude3Sonnet.modelId,
);
2. Efficient Message Handling #
AIChat(
apiKey: 'YOUR_API_KEY',
provider: AIProvider.gemini,
modelId: GeminiModel.geminiFlash.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.geminiFlash.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-3.5, GPT-4, GPT-4-turbo)
- ๐ง Google Gemini Integration (Gemini Flash, Gemini Pro)
- ๏ฟฝ Claude AI Integration (Claude 3 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.gpt35Turbo.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.geminiFlash.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.claude3Sonnet.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.geminiFlash.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.gpt35Turbo- Fast and efficientOpenAIModel.gpt4- Most capable modelOpenAIModel.gpt4Turbo- Optimized GPT-4
Gemini Models:
GeminiModel.geminiFlash- Fast responsesGeminiModel.geminiPro- Balanced performanceGeminiModel.geminiPro15- Enhanced capabilities
Claude Models:
ClaudeModel.claude3Haiku- Fast and lightweightClaudeModel.claude3Sonnet- Balanced performanceClaudeModel.claude3Opus- 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.gpt4Turbo.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.
