fix(app): 곡 상세 화면 UI 개선

- 액션바 제목 '트랙' → '앨범'
- YouTube 버튼: 빨간 배경 + 흰색 글씨로 변경
- 각 섹션(헤더, 영상, 크레딧, 가사)에 흰색 카드 배경 추가
- 앨범 이름 ellipsis 제거 (줄바꿈 허용)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
caadiq 2026-04-04 13:14:36 +09:00
parent 45e69a9b9c
commit 68a0f89816

View file

@ -72,7 +72,7 @@ class _TrackDetailViewState extends State<TrackDetailView> {
icon: const Icon(LucideIcons.arrowLeft),
onPressed: () => context.pop(),
),
title: const Text('트랙', style: TextStyle(fontSize: 18, fontWeight: FontWeight.w600)),
title: const Text('앨범', style: TextStyle(fontSize: 18, fontWeight: FontWeight.w600)),
),
body: FutureBuilder<TrackDetail>(
future: _trackFuture,
@ -162,8 +162,13 @@ class _TrackHeader extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Padding(
return Container(
margin: const EdgeInsets.fromLTRB(16, 16, 16, 8),
padding: const EdgeInsets.all(16),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(12),
),
child: Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
@ -255,8 +260,6 @@ class _TrackHeader extends StatelessWidget {
fontSize: 13,
color: AppColors.textSecondary,
),
maxLines: 1,
overflow: TextOverflow.ellipsis,
),
const SizedBox(height: 8),
//
@ -300,8 +303,13 @@ class _MusicVideoSection extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Padding(
padding: const EdgeInsets.fromLTRB(16, 0, 16, 16),
return Container(
margin: const EdgeInsets.fromLTRB(16, 0, 16, 8),
padding: const EdgeInsets.all(16),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(12),
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
@ -343,17 +351,20 @@ class _MusicVideoSection extends StatelessWidget {
),
),
),
const SizedBox(height: 8),
const SizedBox(height: 10),
// YouTube에서
SizedBox(
width: double.infinity,
child: TextButton.icon(
child: ElevatedButton.icon(
onPressed: onTap,
icon: const Icon(LucideIcons.externalLink, size: 14),
label: const Text('YouTube에서 보기', style: TextStyle(fontSize: 13)),
style: TextButton.styleFrom(
foregroundColor: Colors.red,
padding: const EdgeInsets.symmetric(vertical: 8),
icon: const Icon(LucideIcons.youtube, size: 18),
label: const Text('YouTube에서 보기', style: TextStyle(fontSize: 13, fontWeight: FontWeight.w500)),
style: ElevatedButton.styleFrom(
backgroundColor: Colors.red,
foregroundColor: Colors.white,
padding: const EdgeInsets.symmetric(vertical: 12),
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(12)),
elevation: 0,
),
),
),
@ -377,8 +388,13 @@ class _CreditSection extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Padding(
padding: const EdgeInsets.fromLTRB(16, 0, 16, 16),
return Container(
margin: const EdgeInsets.fromLTRB(16, 0, 16, 8),
padding: const EdgeInsets.all(16),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(12),
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
@ -519,8 +535,13 @@ class _LyricsSection extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Padding(
padding: const EdgeInsets.symmetric(horizontal: 16),
return Container(
margin: const EdgeInsets.fromLTRB(16, 0, 16, 8),
padding: const EdgeInsets.all(16),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(12),
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [