diff --git a/l10n/app_en.arb b/l10n/app_en.arb index 163cefe..ae3bf39 100644 --- a/l10n/app_en.arb +++ b/l10n/app_en.arb @@ -3,6 +3,6 @@ "search": "Search", "liked": "liked!", - "disliked": "unliked" + "disliked": "disliked :(((" } diff --git a/l10n/app_ru.arb b/l10n/app_ru.arb index 27bca94..bcf008c 100644 --- a/l10n/app_ru.arb +++ b/l10n/app_ru.arb @@ -3,5 +3,5 @@ "search": "Поиск", "liked": "понравился!", - "disliked": "разонравился" + "disliked": "разонравился :(((" } diff --git a/lib/components/locale/l10n/app_locale.dart b/lib/components/locale/l10n/app_locale.dart index 1c601cd..9dd909c 100644 --- a/lib/components/locale/l10n/app_locale.dart +++ b/lib/components/locale/l10n/app_locale.dart @@ -110,7 +110,7 @@ abstract class AppLocale { /// No description provided for @disliked. /// /// In ru, this message translates to: - /// **'разонравился'** + /// **'разонравился :((('** String get disliked; } diff --git a/lib/components/locale/l10n/app_locale_en.dart b/lib/components/locale/l10n/app_locale_en.dart index 362a0d2..349cfd2 100644 --- a/lib/components/locale/l10n/app_locale_en.dart +++ b/lib/components/locale/l10n/app_locale_en.dart @@ -13,5 +13,5 @@ class AppLocaleEn extends AppLocale { String get liked => 'liked!'; @override - String get disliked => 'unliked'; + String get disliked => 'disliked :((('; } diff --git a/lib/components/locale/l10n/app_locale_ru.dart b/lib/components/locale/l10n/app_locale_ru.dart index e1485c0..f439151 100644 --- a/lib/components/locale/l10n/app_locale_ru.dart +++ b/lib/components/locale/l10n/app_locale_ru.dart @@ -13,5 +13,5 @@ class AppLocaleRu extends AppLocale { String get liked => 'понравился!'; @override - String get disliked => 'разонравился'; + String get disliked => 'разонравился :((('; } diff --git a/lib/data/dto/album_dto.dart b/lib/data/dto/album_dto.dart index a0cb009..4e1e5f9 100644 --- a/lib/data/dto/album_dto.dart +++ b/lib/data/dto/album_dto.dart @@ -4,14 +4,10 @@ import 'package:uuid/uuid.dart'; @JsonSerializable(createToJson: false) class AlbumDto { final List? data; - final AlbumPaginationDto? pagination; // Добавлено для пагинации + final AlbumPaginationDto? pagination; const AlbumDto({this.data, this.pagination}); - // Здесь убираем factory и оставляем ваш метод fetchAlbums - // factory AlbumDto.fromJson(Map json) => _$AlbumDtoFromJson(json); - - // Ваш метод fetchAlbums будет принимать JSON и вызывать конструктор static AlbumDto fetchAlbums(Map json) { return AlbumDto( data: (json['data'] as List?) @@ -34,9 +30,6 @@ class AlbumPaginationDto { const AlbumPaginationDto({this.currentPage, this.hasNextPage, this.lastVisiblePage}); - // Здесь убираем factory - // factory AlbumPaginationDto.fromJson(Map json) => _$AlbumPaginationDtoFromJson(json); - // Метод для конструирования экземпляра static AlbumPaginationDto fromJson(Map json) { return AlbumPaginationDto( @@ -71,9 +64,6 @@ class AlbumDataDto { this.images, }) : id = id ?? const Uuid().v4(); // Генерация id - // Здесь убираем factory - // factory AlbumDataDto.fromJson(Map json) => _$AlbumDataDtoFromJson(json); - // Метод для конструирования экземпляра static AlbumDataDto fromJson(Map json) { return AlbumDataDto( @@ -96,9 +86,6 @@ class AlbumDataImagesDto { const AlbumDataImagesDto({this.jpg}); - // Здесь убираем factory - // factory AlbumDataImagesDto.fromJson(Map json) => _$AlbumDataImagesDtoFromJson(json); - // Метод для конструирования экземпляра static AlbumDataImagesDto fromJson(Map json) { return AlbumDataImagesDto( @@ -113,9 +100,6 @@ class AlbumDataImagesJPGDto { const AlbumDataImagesJPGDto({this.image_url}); - // Здесь убираем factory - // factory AlbumDataImagesJPGDto.fromJson(Map json) => _$AlbumDataImagesJPGDtoFromJson(json); - // Метод для конструирования экземпляра static AlbumDataImagesJPGDto fromJson(Map json) { return AlbumDataImagesJPGDto( diff --git a/lib/data/mapper/album_mapper.dart b/lib/data/mapper/album_mapper.dart index 3b02f96..67270e6 100644 --- a/lib/data/mapper/album_mapper.dart +++ b/lib/data/mapper/album_mapper.dart @@ -8,7 +8,6 @@ import 'package:uuid/uuid.dart'; import '../../home_page/home_page.dart'; String generateAlbumId(String name, String artist, String url) { - // Простой способ создания уникального идентификатора return '$name|$artist|$url'; } @@ -18,7 +17,6 @@ extension AlbumDataDtoMapper on AlbumDataDto { List albums = []; for (var album in albumsData) { - // Ищем изображение с самым большим размером String? albumImage; // Ищем наиболее подходящее изображение @@ -85,11 +83,10 @@ extension AlbumDataDtoMapper on AlbumDataDto { album.genres = genres; album.tracks = tracks; - // Обновляем дополнительную информацию, если необходимо - album.summary = data['album']?['wiki']?['summary'] ?? "missing"; // или аналогичное поле + album.summary = data['album']?['wiki']?['summary'] ?? "missing"; } - return album; // возвращаем заполненное DTO + return album; } CardData toDomain() { @@ -102,18 +99,14 @@ extension AlbumDataDtoMapper on AlbumDataDto { summary: summary ?? 'UNKNOWN', genres: genres ?? ['UNKNOWN'], tracks: tracks ?? ['UNKNOWN'], - imageUrl: images?.jpg?.image_url ?? 'UNKNOWN', // Привязываем imageUrl к DTO + imageUrl: images?.jpg?.image_url ?? 'UNKNOWN', ); } } extension AlbumDtoMapper on AlbumDto { List fetchAlbumsWithPagination(List albumsData) { - // Используем существующий метод для извлечения данных альбомов List albums = AlbumDataDto().fetchAlbums(albumsData); - - // Другие манипуляции с пагинацией можно добавить здесь, - // если получены дополнительные данные пагинации и необходим их анализ return albums; } diff --git a/lib/data/repositories/album_repository.dart b/lib/data/repositories/album_repository.dart index 6a957c3..b478fa0 100644 --- a/lib/data/repositories/album_repository.dart +++ b/lib/data/repositories/album_repository.dart @@ -1,5 +1,5 @@ import 'package:pmd_labs/data/dto/album_dto.dart'; -import 'package:pmd_labs/data/mapper/album_mapper.dart'; // Путь к вашему мапперу +import 'package:pmd_labs/data/mapper/album_mapper.dart'; import 'package:dio/dio.dart'; import 'package:pmd_labs/card_data.dart'; import 'package:pretty_dio_logger/pretty_dio_logger.dart'; @@ -16,9 +16,8 @@ class AlbumRepository extends ApiInterface { )); static const String apiKey = '535d9d508a785fae99bfb492d8f15a58'; - static const String _baseUrl = 'https://api.your_album_api.com'; // Замените на ваш базовый URL + static const String _baseUrl = 'https://api.your_album_api.com'; - // Метод для загрузки списка альбомов по названию с учетом пагинации @override Future?> loadData({String? albumName, int page = 1, int pageSize = 5}) async { if (albumName == null || albumName == "") albumName = 'a'; diff --git a/lib/details_page/detail_page.dart b/lib/details_page/detail_page.dart index 405dc21..c7075d9 100644 --- a/lib/details_page/detail_page.dart +++ b/lib/details_page/detail_page.dart @@ -130,7 +130,7 @@ class _DetailsPageState extends State { '${albumDetails.artist}', style: Theme.of(context).textTheme.bodyMedium?.copyWith(color: Colors.white), ), - SizedBox(height: 8.0), // Отступ между блоками + SizedBox(height: 8.0), Text( 'Year:', @@ -140,7 +140,7 @@ class _DetailsPageState extends State { '${albumDetails.year}', style: Theme.of(context).textTheme.bodyMedium?.copyWith(color: Colors.white), ), - SizedBox(height: 8.0), // Отступ между блоками + SizedBox(height: 8.0), Text( 'Genres:', @@ -182,7 +182,6 @@ class _DetailsPageState extends State { color: Colors.purple, ), const SizedBox(width: 8.0), - // Отступ между иконкой и текстом Text( track, style: Theme.of(context).textTheme.bodyMedium?.copyWith(color: Colors.white), @@ -212,7 +211,7 @@ class _DetailsPageState extends State { 'Summary:', style: Theme.of(context).textTheme.headlineSmall?.copyWith(color: Colors.orange), ), - SizedBox(height: 8.0), // Отступ между заголовком и текстом + SizedBox(height: 8.0), Text( '${albumDetails.summary}', style: Theme.of(context).textTheme.bodyMedium?.copyWith(color: Colors.white), diff --git a/lib/home_page/card.dart b/lib/home_page/card.dart index 8b126b5..6c349c8 100644 --- a/lib/home_page/card.dart +++ b/lib/home_page/card.dart @@ -96,7 +96,6 @@ class _Card extends StatelessWidget { .bodyMedium ?.copyWith(color: Color(0xFFDCDCDC)), ), - // Здесь можно добавить отображение года и жанров, если это необходимо Text( year, style: Theme.of(context).textTheme.bodyMedium, diff --git a/lib/home_page/home_page.dart b/lib/home_page/home_page.dart index 840170f..47c6506 100644 --- a/lib/home_page/home_page.dart +++ b/lib/home_page/home_page.dart @@ -43,7 +43,7 @@ class _MyHomePageState extends State { ), body: Container( color: const Color(0xFF403042), - child: const Body(), // Ваш виджет Body + child: const Body(), ), ); } @@ -136,7 +136,6 @@ class _BodyState extends State { style: TextStyle(color: Colors.orange, fontFamily: 'Correction_Tape'), ), ), - // GestureDetector размещен справа от поля поиска GestureDetector( onTap: () => context.read().add(const ChangeLocaleEvent()), diff --git a/lib/like_bloc/like_bloc.dart b/lib/like_bloc/like_bloc.dart index fbfbed8..ddd3a8e 100644 --- a/lib/like_bloc/like_bloc.dart +++ b/lib/like_bloc/like_bloc.dart @@ -31,9 +31,6 @@ class LikeBloc extends Bloc { final prefs = await SharedPreferences.getInstance(); await prefs.setStringList(_likedPrefsKey, updatedList); - // Отладка - print('Saved likes: $updatedList'); // Просто для проверки - emit(state.copyWith(likedIds: updatedList)); } } diff --git a/lib/main.dart b/lib/main.dart index befe3da..e1b1188 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -22,10 +22,9 @@ class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { - // Устанавливаем локаль по умолчанию final initialLocale = kIsWeb - ? const Locale('ru') // Измените это на необходимую локаль для веба - : Locale(Platform.localeName);// локаль по умолчанию для мобильных приложений или веба + ? const Locale('ru') + : Locale(Platform.localeName); return BlocProvider( lazy: false,