PMU_PIbd32_Kamcharova_K.A/lib/character.dart

88 lines
2.1 KiB
Dart
Raw Permalink Normal View History

2024-12-03 16:42:54 +04:00
enum CharacterType { Survivor, Hunter }
class Character {
final String name;
final CharacterType type;
final String backstory;
final String imageUrl;
bool isLiked;
Character({
required this.name,
required this.type,
required this.backstory,
required this.imageUrl,
this.isLiked = false, // Значение по умолчанию - false
});
factory Character.fromJson(Map<String, dynamic> json) {
try {
CharacterType characterType;
if (json['type'] == 'Выживший') {
characterType = CharacterType.Survivor;
} else if (json['type'] == 'Охотник') {
characterType = CharacterType.Hunter;
} else {
throw Exception('Неизвестный тип персонажа: ${json['type']}');
}
return Character(
name: json['name'],
type: characterType,
backstory: json['backstory'],
imageUrl: json['image_url'], // Используем корректный URL
);
} catch (e) {
print("Ошибка при парсинге данных: $e");
throw Exception('Ошибка при парсинге персонажа');
}
}
// Преобразуем тип обратно в строку
String get typeString {
switch (type) {
case CharacterType.Survivor:
return 'Выживший';
case CharacterType.Hunter:
return 'Охотник';
default:
return 'Неизвестно';
}
}
String getInfo() {
return '$typeString - $backstory';
}
static empty() {
return null;
}
}
class Survivor extends Character {
Survivor({
required String name,
required String backstory,
required String imageUrl,
}) : super(
name: name,
backstory: backstory,
imageUrl: imageUrl,
type: CharacterType.Survivor,
);
}
class Hunter extends Character {
Hunter({
required String name,
required String backstory,
required String imageUrl,
}) : super(
name: name,
backstory: backstory,
imageUrl: imageUrl,
type: CharacterType.Hunter,
);
}