首次提交:初始化项目

This commit is contained in:
lhr
2025-12-30 01:06:42 +08:00
parent 6dcba8d533
commit 9d45d4c726
141 changed files with 6186 additions and 133 deletions

View File

@@ -0,0 +1,116 @@
import 'dart:async';
import 'dart:math';
import 'package:flutter/material.dart';
import '../models/message.dart';
class ChatProvider extends ChangeNotifier {
final List<Message> _messages = [];
bool _isTyping = false;
String _currentAiResponse = '';
List<Message> get messages => List.unmodifiable(_messages);
bool get isTyping => _isTyping;
String get currentAiResponse => _currentAiResponse;
// Simulated AI responses for demo
final List<String> _aiResponses = [
'''# 你好!👋
我是你的 AI 助手,很高兴为你服务!
我可以帮助你:
- 回答各种问题
- 进行创意写作
- 代码编程辅助
- 翻译和语言学习
有什么我可以帮助你的吗?''',
'''## 这是一个很好的问题!
让我来详细解释一下:
1. **首先**,我们需要理解问题的核心
2. **其次**,分析可能的解决方案
3. **最后**,选择最优的实现方式
```dart
void main() {
print('Hello, Flutter!');
}
```
希望这个解释对你有帮助!''',
'''### 关于这个话题
我有以下几点想法:
> "创新是区分领导者和追随者的关键。" — 史蒂夫·乔布斯
| 方面 | 优点 | 缺点 |
|------|------|------|
| 性能 | ⚡ 快速 | 💾 内存占用 |
| 易用性 | ✅ 简单 | 📚 学习曲线 |
如果你有更多问题,随时问我!''',
'''我理解你的需求。让我为你提供一些建议:
1. 保持代码简洁清晰
2. 注重用户体验设计
3. 定期进行代码审查
4. 编写详细的文档
*记住:好的软件不仅仅是功能强大,更要易于使用和维护。*''',
];
void sendMessage(String content) {
if (content.trim().isEmpty) return;
// Add user message
final userMessage = Message(
id: DateTime.now().millisecondsSinceEpoch.toString(),
content: content,
isUser: true,
);
_messages.add(userMessage);
notifyListeners();
// Simulate AI response
_simulateAiResponse();
}
Future<void> _simulateAiResponse() async {
_isTyping = true;
_currentAiResponse = '';
notifyListeners();
// Wait a bit before starting to "type"
await Future.delayed(const Duration(milliseconds: 800));
// Get a random response
final random = Random();
final response = _aiResponses[random.nextInt(_aiResponses.length)];
// Simulate typing effect
for (int i = 0; i < response.length; i++) {
await Future.delayed(Duration(milliseconds: 10 + random.nextInt(20)));
_currentAiResponse = response.substring(0, i + 1);
notifyListeners();
}
// Add the complete message
final aiMessage = Message(
id: DateTime.now().millisecondsSinceEpoch.toString(),
content: response,
isUser: false,
);
_messages.add(aiMessage);
_isTyping = false;
_currentAiResponse = '';
notifyListeners();
}
void clearMessages() {
_messages.clear();
notifyListeners();
}
}