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 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 Character? empty() { return null; // Возвращаем 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, ); }