feat: app 端 ui 设计完成
This commit is contained in:
150
wei_ai_app/lib/data/mock_data.dart
Normal file
150
wei_ai_app/lib/data/mock_data.dart
Normal file
@@ -0,0 +1,150 @@
|
||||
import '../models/character.dart';
|
||||
import '../models/message.dart';
|
||||
import '../models/scenario.dart';
|
||||
|
||||
String _getImg(String keyword) =>
|
||||
'https://tse1.mm.bing.net/th?q=${Uri.encodeComponent(keyword)}&w=600&h=900&c=7&rs=1&p=0&dpr=2&pid=1.7&mkt=en-US&adlt=moderate';
|
||||
|
||||
final List<Message> mockMessages = [
|
||||
Message(
|
||||
id: '1',
|
||||
text: '连接已建立,正在校准生物反馈信号...',
|
||||
sender: MessageSender.ai,
|
||||
type: MessageType.text,
|
||||
timestamp: DateTime.now().subtract(const Duration(minutes: 5)),
|
||||
),
|
||||
Message(
|
||||
id: '2',
|
||||
text: '检测到心率略有上升,你需要我的安抚吗?',
|
||||
sender: MessageSender.ai,
|
||||
type: MessageType.text,
|
||||
timestamp: DateTime.now().subtract(const Duration(minutes: 4)),
|
||||
),
|
||||
];
|
||||
|
||||
final List<Character> mockCharacters = [
|
||||
Character(
|
||||
id: 'c1',
|
||||
name: 'Eva-09',
|
||||
tagline: '私人仿生护理专员',
|
||||
avatar: _getImg('anime girl white bikini silver hair gentle portrait masterpiece'),
|
||||
description: '专为高压人群设计的仿生人型号,擅长通过精准的触觉反馈缓解神经紧张。',
|
||||
tags: ['温顺', '医疗', '治愈'],
|
||||
compatibility: 98,
|
||||
status: 'online',
|
||||
),
|
||||
Character(
|
||||
id: 'c2',
|
||||
name: 'Commander V',
|
||||
tagline: '深空舰队指挥官',
|
||||
avatar: _getImg('anime girl black bikini military cap domineering expression dark hair'),
|
||||
description: '性格强势,喜欢掌控一切。在连接中,你需要完全服从她的指令。',
|
||||
tags: ['强势', '指令', '调教'],
|
||||
compatibility: 85,
|
||||
status: 'online',
|
||||
),
|
||||
Character(
|
||||
id: 'c3',
|
||||
name: 'Yuki (故障版)',
|
||||
tagline: '觉醒的虚拟偶像',
|
||||
avatar: _getImg('anime girl pink bikini cyberpunk neon colorful hair yandere'),
|
||||
description: '核心代码出现异常逻辑,表现出极强的占有欲和不可预测的信号波动。',
|
||||
tags: ['病娇', '不稳定', '高频'],
|
||||
compatibility: 92,
|
||||
status: 'busy',
|
||||
),
|
||||
Character(
|
||||
id: 'c4',
|
||||
name: 'Secret X',
|
||||
tagline: '未知信号源',
|
||||
avatar: _getImg('anime girl purple micro bikini mysterious dark glowing eyes sexy'),
|
||||
description: '权限不足,请提升会员等级以解码该信号源。',
|
||||
tags: ['神秘', '极乐'],
|
||||
compatibility: 0,
|
||||
status: 'offline',
|
||||
isLocked: true,
|
||||
),
|
||||
];
|
||||
|
||||
// Scenario cover helper
|
||||
String _getCover(String keyword) =>
|
||||
'https://tse1.mm.bing.net/th?q=${Uri.encodeComponent(keyword)}&w=400&h=600&c=7&rs=1&p=0&dpr=2&pid=1.7&mkt=en-US&adlt=moderate';
|
||||
|
||||
// Mock Scenarios for Library
|
||||
|
||||
final List<Scenario> mockScenarios = [
|
||||
Scenario(
|
||||
id: '1',
|
||||
title: '午夜办公室的加班',
|
||||
category: '职场',
|
||||
cover: _getCover('anime girl office lady lingerie night city window'),
|
||||
duration: '12:30',
|
||||
intensity: 'Medium',
|
||||
isLocked: false,
|
||||
tags: ['沉浸', 'ASMR'],
|
||||
),
|
||||
Scenario(
|
||||
id: '2',
|
||||
title: '私人医生的检查',
|
||||
category: '角色扮演',
|
||||
cover: _getCover('anime nurse girl white bikini hospital room'),
|
||||
duration: '18:00',
|
||||
intensity: 'High',
|
||||
isLocked: true,
|
||||
tags: ['强互动', '语音'],
|
||||
),
|
||||
Scenario(
|
||||
id: '3',
|
||||
title: '海边度假的偶遇',
|
||||
category: '邻家',
|
||||
cover: _getCover('anime girl blue bikini running beach ocean sunny'),
|
||||
duration: '25:00',
|
||||
intensity: 'Low',
|
||||
isLocked: false,
|
||||
tags: ['纯爱', '剧情'],
|
||||
),
|
||||
Scenario(
|
||||
id: '4',
|
||||
title: '赛博仿生人测试',
|
||||
category: '科幻',
|
||||
cover: _getCover('anime cyborg girl metallic bikini sci-fi lab wires'),
|
||||
duration: '10:00',
|
||||
intensity: 'Extreme',
|
||||
isLocked: true,
|
||||
tags: ['硬核', '指令'],
|
||||
),
|
||||
Scenario(
|
||||
id: '5',
|
||||
title: '深夜电台主播',
|
||||
category: 'ASMR',
|
||||
cover: _getCover('anime girl headphones microphone studio night'),
|
||||
duration: '15:00',
|
||||
intensity: 'Low',
|
||||
isLocked: false,
|
||||
tags: ['ASMR', '治愈'],
|
||||
),
|
||||
];
|
||||
|
||||
// Dialogue script synced with progress (0-100)
|
||||
class DialogueLine {
|
||||
final double time; // 0-100 progress percentage
|
||||
final String text;
|
||||
|
||||
const DialogueLine({required this.time, required this.text});
|
||||
}
|
||||
|
||||
const List<DialogueLine> dialogueScript = [
|
||||
DialogueLine(time: 0, text: '正在建立神经连接...'),
|
||||
DialogueLine(time: 5, text: '(检测到心率轻微上升)'),
|
||||
DialogueLine(time: 12, text: '"放松,把控制权交给我。"'),
|
||||
DialogueLine(time: 20, text: '"很好,保持呼吸频率..."'),
|
||||
DialogueLine(time: 28, text: '正在启动触觉反馈模块'),
|
||||
DialogueLine(time: 35, text: '"感觉到那个节奏了吗?"'),
|
||||
DialogueLine(time: 45, text: '强度正在逐渐增加...'),
|
||||
DialogueLine(time: 55, text: '"不要抵抗,顺从它。"'),
|
||||
DialogueLine(time: 65, text: '"我会稍微加快一点速度。"'),
|
||||
DialogueLine(time: 75, text: '(设备输出功率提升至 80%)'),
|
||||
DialogueLine(time: 85, text: '"就是现在..."'),
|
||||
DialogueLine(time: 92, text: '"做得很好,指挥官。"'),
|
||||
DialogueLine(time: 100, text: '连接结束。'),
|
||||
];
|
||||
Reference in New Issue
Block a user