fromis_9/app/lib/models/album.dart
caadiq 488e4094c8 Flutter 앱: 멤버 화면 카드 스와이프 UI 및 홈 애니메이션 추가
- 홈 화면에 웹과 동일한 framer-motion 스타일 애니메이션 적용
- 멤버 화면 카드 스와이프 디자인으로 재구현
- 인스타그램 딥링크 지원 (url_launcher, AndroidManifest queries)
- flutter_svg 추가로 SVG 아이콘 동적 strokeWidth 지원
- 바텀 네비게이션 아이콘 strokeWidth 웹과 동일하게 조정
- 멤버 화면 툴바 그림자 제거 및 인디케이터 그림자 최적화
- 탭 전환 시 애니메이션 재생 기능 추가

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-13 00:07:59 +09:00

46 lines
1.2 KiB
Dart

/// 앨범 모델
library;
class Album {
final int id;
final String title;
final String? albumType;
final String? albumTypeShort;
final String? releaseDate;
final String? coverOriginalUrl;
final String? coverMediumUrl;
final String? coverThumbUrl;
final String? folderName;
final String? description;
Album({
required this.id,
required this.title,
this.albumType,
this.albumTypeShort,
this.releaseDate,
this.coverOriginalUrl,
this.coverMediumUrl,
this.coverThumbUrl,
this.folderName,
this.description,
});
factory Album.fromJson(Map<String, dynamic> json) {
return Album(
id: json['id'] as int,
title: json['title'] as String,
albumType: json['album_type'] as String?,
albumTypeShort: json['album_type_short'] as String?,
releaseDate: json['release_date'] as String?,
coverOriginalUrl: json['cover_original_url'] as String?,
coverMediumUrl: json['cover_medium_url'] as String?,
coverThumbUrl: json['cover_thumb_url'] as String?,
folderName: json['folder_name'] as String?,
description: json['description'] as String?,
);
}
/// 발매 년도 추출
String? get releaseYear => releaseDate?.substring(0, 4);
}