88 lines
2.1 KiB
Dart
88 lines
2.1 KiB
Dart
|
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,
|
||
|
);
|
||
|
}
|