убрал мусор...надеюсь
This commit is contained in:
parent
2e4cfb250a
commit
c3d58bcfc1
@ -3,6 +3,6 @@
|
||||
|
||||
"search": "Search",
|
||||
"liked": "liked!",
|
||||
"disliked": "unliked"
|
||||
"disliked": "disliked :((("
|
||||
|
||||
}
|
||||
|
@ -3,5 +3,5 @@
|
||||
|
||||
"search": "Поиск",
|
||||
"liked": "понравился!",
|
||||
"disliked": "разонравился"
|
||||
"disliked": "разонравился :((("
|
||||
}
|
||||
|
@ -110,7 +110,7 @@ abstract class AppLocale {
|
||||
/// No description provided for @disliked.
|
||||
///
|
||||
/// In ru, this message translates to:
|
||||
/// **'разонравился'**
|
||||
/// **'разонравился :((('**
|
||||
String get disliked;
|
||||
}
|
||||
|
||||
|
@ -13,5 +13,5 @@ class AppLocaleEn extends AppLocale {
|
||||
String get liked => 'liked!';
|
||||
|
||||
@override
|
||||
String get disliked => 'unliked';
|
||||
String get disliked => 'disliked :(((';
|
||||
}
|
||||
|
@ -13,5 +13,5 @@ class AppLocaleRu extends AppLocale {
|
||||
String get liked => 'понравился!';
|
||||
|
||||
@override
|
||||
String get disliked => 'разонравился';
|
||||
String get disliked => 'разонравился :(((';
|
||||
}
|
||||
|
@ -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(
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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';
|
||||
|
@ -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),
|
||||
|
@ -96,7 +96,6 @@ class _Card extends StatelessWidget {
|
||||
.bodyMedium
|
||||
?.copyWith(color: Color(0xFFDCDCDC)),
|
||||
),
|
||||
// Здесь можно добавить отображение года и жанров, если это необходимо
|
||||
Text(
|
||||
year,
|
||||
style: Theme.of(context).textTheme.bodyMedium,
|
||||
|
@ -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()),
|
||||
|
@ -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));
|
||||
}
|
||||
}
|
||||
|
@ -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,
|
||||
|
Loading…
x
Reference in New Issue
Block a user