убрал мусор...надеюсь

This commit is contained in:
Milana Ievlewa 2024-12-21 02:31:23 +04:00
parent 2e4cfb250a
commit c3d58bcfc1
13 changed files with 17 additions and 48 deletions

View File

@ -3,6 +3,6 @@
"search": "Search",
"liked": "liked!",
"disliked": "unliked"
"disliked": "disliked :((("
}

View File

@ -3,5 +3,5 @@
"search": "Поиск",
"liked": "понравился!",
"disliked": "разонравился"
"disliked": "разонравился :((("
}

View File

@ -110,7 +110,7 @@ abstract class AppLocale {
/// No description provided for @disliked.
///
/// In ru, this message translates to:
/// **'разонравился'**
/// **'разонравился :((('**
String get disliked;
}

View File

@ -13,5 +13,5 @@ class AppLocaleEn extends AppLocale {
String get liked => 'liked!';
@override
String get disliked => 'unliked';
String get disliked => 'disliked :(((';
}

View File

@ -13,5 +13,5 @@ class AppLocaleRu extends AppLocale {
String get liked => 'понравился!';
@override
String get disliked => 'разонравился';
String get disliked => 'разонравился :(((';
}

View File

@ -4,14 +4,10 @@ import 'package:uuid/uuid.dart';
@JsonSerializable(createToJson: false)
class AlbumDto {
final List<AlbumDataDto>? data;
final AlbumPaginationDto? pagination; // Добавлено для пагинации
final AlbumPaginationDto? pagination;
const AlbumDto({this.data, this.pagination});
// Здесь убираем factory и оставляем ваш метод fetchAlbums
// factory AlbumDto.fromJson(Map<String, dynamic> json) => _$AlbumDtoFromJson(json);
// Ваш метод fetchAlbums будет принимать JSON и вызывать конструктор
static AlbumDto fetchAlbums(Map<String, dynamic> json) {
return AlbumDto(
data: (json['data'] as List<dynamic>?)
@ -34,9 +30,6 @@ class AlbumPaginationDto {
const AlbumPaginationDto({this.currentPage, this.hasNextPage, this.lastVisiblePage});
// Здесь убираем factory
// factory AlbumPaginationDto.fromJson(Map<String, dynamic> json) => _$AlbumPaginationDtoFromJson(json);
// Метод для конструирования экземпляра
static AlbumPaginationDto fromJson(Map<String, dynamic> json) {
return AlbumPaginationDto(
@ -71,9 +64,6 @@ class AlbumDataDto {
this.images,
}) : id = id ?? const Uuid().v4(); // Генерация id
// Здесь убираем factory
// factory AlbumDataDto.fromJson(Map<String, dynamic> json) => _$AlbumDataDtoFromJson(json);
// Метод для конструирования экземпляра
static AlbumDataDto fromJson(Map<String, dynamic> json) {
return AlbumDataDto(
@ -96,9 +86,6 @@ class AlbumDataImagesDto {
const AlbumDataImagesDto({this.jpg});
// Здесь убираем factory
// factory AlbumDataImagesDto.fromJson(Map<String, dynamic> json) => _$AlbumDataImagesDtoFromJson(json);
// Метод для конструирования экземпляра
static AlbumDataImagesDto fromJson(Map<String, dynamic> json) {
return AlbumDataImagesDto(
@ -113,9 +100,6 @@ class AlbumDataImagesJPGDto {
const AlbumDataImagesJPGDto({this.image_url});
// Здесь убираем factory
// factory AlbumDataImagesJPGDto.fromJson(Map<String, dynamic> json) => _$AlbumDataImagesJPGDtoFromJson(json);
// Метод для конструирования экземпляра
static AlbumDataImagesJPGDto fromJson(Map<String, dynamic> json) {
return AlbumDataImagesJPGDto(

View File

@ -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<AlbumDataDto> 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<AlbumDataDto> fetchAlbumsWithPagination(List<dynamic> albumsData) {
// Используем существующий метод для извлечения данных альбомов
List<AlbumDataDto> albums = AlbumDataDto().fetchAlbums(albumsData);
// Другие манипуляции с пагинацией можно добавить здесь,
// если получены дополнительные данные пагинации и необходим их анализ
return albums;
}

View File

@ -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<List<CardData>?> loadData({String? albumName, int page = 1, int pageSize = 5}) async {
if (albumName == null || albumName == "") albumName = 'a';

View File

@ -130,7 +130,7 @@ class _DetailsPageState extends State<DetailsPage> {
'${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<DetailsPage> {
'${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<DetailsPage> {
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<DetailsPage> {
'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),

View File

@ -96,7 +96,6 @@ class _Card extends StatelessWidget {
.bodyMedium
?.copyWith(color: Color(0xFFDCDCDC)),
),
// Здесь можно добавить отображение года и жанров, если это необходимо
Text(
year,
style: Theme.of(context).textTheme.bodyMedium,

View File

@ -43,7 +43,7 @@ class _MyHomePageState extends State<MyHomePage> {
),
body: Container(
color: const Color(0xFF403042),
child: const Body(), // Ваш виджет Body
child: const Body(),
),
);
}
@ -136,7 +136,6 @@ class _BodyState extends State<Body> {
style: TextStyle(color: Colors.orange, fontFamily: 'Correction_Tape'),
),
),
// GestureDetector размещен справа от поля поиска
GestureDetector(
onTap: () =>
context.read<LocaleBloc>().add(const ChangeLocaleEvent()),

View File

@ -31,9 +31,6 @@ class LikeBloc extends Bloc<LikeEvent, LikeState> {
final prefs = await SharedPreferences.getInstance();
await prefs.setStringList(_likedPrefsKey, updatedList);
// Отладка
print('Saved likes: $updatedList'); // Просто для проверки
emit(state.copyWith(likedIds: updatedList));
}
}

View File

@ -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<LocaleBloc>(
lazy: false,