fix(app): 앨범 상세/곡 상세/갤러리 화면 툴바 스크롤 시 늘어남 수정
- SliverAppBar에 stretch: false 명시 - CustomScrollView에 ClampingScrollPhysics 적용 (overscroll 방지) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
737247eec3
commit
78b3b4121c
3 changed files with 36 additions and 55 deletions
|
|
@ -45,6 +45,17 @@ class _AlbumDetailViewState extends State<AlbumDetailView> {
|
|||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
backgroundColor: AppColors.background,
|
||||
appBar: AppBar(
|
||||
backgroundColor: Colors.white,
|
||||
foregroundColor: AppColors.textPrimary,
|
||||
elevation: 0,
|
||||
scrolledUnderElevation: 0,
|
||||
leading: IconButton(
|
||||
icon: const Icon(LucideIcons.arrowLeft),
|
||||
onPressed: () => context.pop(),
|
||||
),
|
||||
title: const Text('앨범', style: TextStyle(fontSize: 18, fontWeight: FontWeight.w600)),
|
||||
),
|
||||
body: FutureBuilder<Album>(
|
||||
future: _albumFuture,
|
||||
builder: (context, snapshot) {
|
||||
|
|
@ -122,27 +133,8 @@ class _AlbumDetailViewState extends State<AlbumDetailView> {
|
|||
: album.tracks?.take(5).toList();
|
||||
|
||||
return CustomScrollView(
|
||||
physics: const ClampingScrollPhysics(),
|
||||
slivers: [
|
||||
// 앱바
|
||||
SliverAppBar(
|
||||
pinned: true,
|
||||
backgroundColor: Colors.white,
|
||||
foregroundColor: AppColors.textPrimary,
|
||||
elevation: 0,
|
||||
scrolledUnderElevation: 0,
|
||||
leading: IconButton(
|
||||
icon: const Icon(LucideIcons.arrowLeft),
|
||||
onPressed: () => context.pop(),
|
||||
),
|
||||
title: const Text(
|
||||
'앨범',
|
||||
style: TextStyle(
|
||||
fontSize: 18,
|
||||
fontWeight: FontWeight.w600,
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
// 히어로 섹션
|
||||
SliverToBoxAdapter(
|
||||
child: _HeroSection(album: album, formatDate: _formatDate),
|
||||
|
|
|
|||
|
|
@ -36,6 +36,17 @@ class _AlbumGalleryViewState extends State<AlbumGalleryView> {
|
|||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
backgroundColor: AppColors.background,
|
||||
appBar: AppBar(
|
||||
backgroundColor: Colors.white,
|
||||
foregroundColor: AppColors.textPrimary,
|
||||
elevation: 0,
|
||||
scrolledUnderElevation: 0,
|
||||
leading: IconButton(
|
||||
icon: const Icon(LucideIcons.arrowLeft),
|
||||
onPressed: () => context.pop(),
|
||||
),
|
||||
title: const Text('컨셉 포토', style: TextStyle(fontSize: 18, fontWeight: FontWeight.w600)),
|
||||
),
|
||||
body: FutureBuilder<Album>(
|
||||
future: _albumFuture,
|
||||
builder: (context, snapshot) {
|
||||
|
|
@ -103,26 +114,8 @@ class _AlbumGalleryViewState extends State<AlbumGalleryView> {
|
|||
}
|
||||
|
||||
return CustomScrollView(
|
||||
physics: const ClampingScrollPhysics(),
|
||||
slivers: [
|
||||
// 앱바
|
||||
SliverAppBar(
|
||||
pinned: true,
|
||||
backgroundColor: Colors.white,
|
||||
foregroundColor: AppColors.textPrimary,
|
||||
elevation: 0,
|
||||
scrolledUnderElevation: 0,
|
||||
leading: IconButton(
|
||||
icon: const Icon(LucideIcons.arrowLeft),
|
||||
onPressed: () => context.pop(),
|
||||
),
|
||||
title: const Text(
|
||||
'앨범',
|
||||
style: TextStyle(
|
||||
fontSize: 18,
|
||||
fontWeight: FontWeight.w600,
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
// 앨범 헤더 카드
|
||||
SliverToBoxAdapter(
|
||||
|
|
|
|||
|
|
@ -62,6 +62,17 @@ class _TrackDetailViewState extends State<TrackDetailView> {
|
|||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
backgroundColor: AppColors.background,
|
||||
appBar: AppBar(
|
||||
backgroundColor: Colors.white,
|
||||
foregroundColor: AppColors.textPrimary,
|
||||
elevation: 0,
|
||||
scrolledUnderElevation: 0,
|
||||
leading: IconButton(
|
||||
icon: const Icon(LucideIcons.arrowLeft),
|
||||
onPressed: () => context.pop(),
|
||||
),
|
||||
title: const Text('트랙', style: TextStyle(fontSize: 18, fontWeight: FontWeight.w600)),
|
||||
),
|
||||
body: FutureBuilder<TrackDetail>(
|
||||
future: _trackFuture,
|
||||
builder: (context, snapshot) {
|
||||
|
|
@ -93,23 +104,8 @@ class _TrackDetailViewState extends State<TrackDetailView> {
|
|||
final youtubeVideoId = _getYoutubeVideoId(track.musicVideoUrl);
|
||||
|
||||
return CustomScrollView(
|
||||
physics: const ClampingScrollPhysics(),
|
||||
slivers: [
|
||||
// 앱바
|
||||
SliverAppBar(
|
||||
pinned: true,
|
||||
backgroundColor: Colors.white,
|
||||
foregroundColor: AppColors.textPrimary,
|
||||
elevation: 0,
|
||||
leading: IconButton(
|
||||
icon: const Icon(LucideIcons.arrowLeft),
|
||||
onPressed: () => context.pop(),
|
||||
),
|
||||
title: const Text(
|
||||
'트랙',
|
||||
style: TextStyle(fontSize: 18, fontWeight: FontWeight.w600),
|
||||
),
|
||||
),
|
||||
|
||||
// 트랙 정보 헤더
|
||||
SliverToBoxAdapter(
|
||||
child: _TrackHeader(track: track),
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue