import 'package:flutter/material.dart'; /// AI导师类型枚举 enum TutorType { business, daily, travel, academic, } /// AI导师扩展方法 extension TutorTypeExtension on TutorType { String get displayName { switch (this) { case TutorType.business: return '商务导师'; case TutorType.daily: return '日常导师'; case TutorType.travel: return '旅行导师'; case TutorType.academic: return '学术导师'; } } String get description { switch (this) { case TutorType.business: return '专业商务场景'; case TutorType.daily: return '生活场景对话'; case TutorType.travel: return '旅游场景专训'; case TutorType.academic: return '学术讨论演讲'; } } IconData get icon { switch (this) { case TutorType.business: return Icons.business_center; case TutorType.daily: return Icons.chat; case TutorType.travel: return Icons.flight; case TutorType.academic: return Icons.school; } } Color get color { switch (this) { case TutorType.business: return Colors.blue; case TutorType.daily: return Colors.green; case TutorType.travel: return Colors.orange; case TutorType.academic: return Colors.purple; } } } /// AI导师模型 class AITutor { final String id; final TutorType type; final String name; final String avatar; final String introduction; final List specialties; final List sampleQuestions; final String personality; final DateTime createdAt; final DateTime updatedAt; const AITutor({ required this.id, required this.type, required this.name, required this.avatar, required this.introduction, required this.specialties, required this.sampleQuestions, required this.personality, required this.createdAt, required this.updatedAt, }); factory AITutor.fromJson(Map json) { return AITutor( id: json['id'] as String, type: TutorType.values.firstWhere( (e) => e.name == json['type'], orElse: () => TutorType.daily, ), name: json['name'] as String, avatar: json['avatar'] as String, introduction: json['introduction'] as String, specialties: List.from(json['specialties'] as List), sampleQuestions: List.from(json['sampleQuestions'] as List), personality: json['personality'] as String, createdAt: DateTime.parse(json['createdAt'] as String), updatedAt: DateTime.parse(json['updatedAt'] as String), ); } Map toJson() { return { 'id': id, 'type': type.name, 'name': name, 'avatar': avatar, 'introduction': introduction, 'specialties': specialties, 'sampleQuestions': sampleQuestions, 'personality': personality, 'createdAt': createdAt.toIso8601String(), 'updatedAt': updatedAt.toIso8601String(), }; } AITutor copyWith({ String? id, TutorType? type, String? name, String? avatar, String? introduction, List? specialties, List? sampleQuestions, String? personality, DateTime? createdAt, DateTime? updatedAt, }) { return AITutor( id: id ?? this.id, type: type ?? this.type, name: name ?? this.name, avatar: avatar ?? this.avatar, introduction: introduction ?? this.introduction, specialties: specialties ?? this.specialties, sampleQuestions: sampleQuestions ?? this.sampleQuestions, personality: personality ?? this.personality, createdAt: createdAt ?? this.createdAt, updatedAt: updatedAt ?? this.updatedAt, ); } }