From 383d3143c8b842384501ba688e22b657f9724b74 Mon Sep 17 00:00:00 2001 From: sihoo Date: Thu, 1 Oct 2026 23:30:24 +0000 Subject: [PATCH] =?UTF-8?q?=EC=BB=A4=EC=8A=A4=ED=85=80=EC=B0=BD=20?= =?UTF-8?q?=EC=B2=B4=ED=97=98=ED=95=98=EA=B8=B0=20=EB=AF=B8=EB=A6=AC?= =?UTF-8?q?=EB=B3=B4=EA=B8=B0=EA=B0=80=20=EC=A0=9C=EB=AA=A9=20=EC=95=8C?= =?UTF-8?q?=EC=95=BD/=EC=A4=80=EB=B9=84=EC=A4=91=20=ED=83=80=EC=9D=BC?= =?UTF-8?q?=EA=B9=8C=EC=A7=80=20=EC=A0=84=EB=B6=80=20=EB=B0=98=EC=98=81?= =?UTF-8?q?=EB=90=98=EA=B2=8C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit TitlePill이 전역(globalProfileTheme, 실제 장착된 테마)만 구독하고 있어서, 커스텀창 안에서 체험하기로 다른 템플릿을 미리보는 중에도 제목 알약은 실제 장착된 테마 색 그대로 남아있었다. TitlePill에 previewTheme 파라미터를 추가해 넘기면 전역 테마보다 우선하도록 하고, 커스텀창에서 자신의 _displayTheme(체험 중인 테마)를 넘기게 했다. "랭킹·친구창 배경"/"출석·그룹창 표시" 준비중 타일도 같은 이유로 실제 장착된 테마(AppPalette.linen/sage, 전역)를 쓰고 있어서 체험하기를 눌러도 안 바뀌던 것을, _CategoryTile에 theme 파라미터를 추가해 _displayTheme을 쓰도록 고쳤다. --- lib/ui/profile_customize_screen.dart | 15 ++++++++++++--- lib/ui/title_pill.dart | 10 ++++++++-- 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/lib/ui/profile_customize_screen.dart b/lib/ui/profile_customize_screen.dart index 2931030..b7ca056 100644 --- a/lib/ui/profile_customize_screen.dart +++ b/lib/ui/profile_customize_screen.dart @@ -136,7 +136,7 @@ class _ProfileCustomizeScreenState extends State { foregroundColor: AppPalette.ink, elevation: 0, centerTitle: true, - title: const TitlePill('프로필 꾸미기'), + title: TitlePill('프로필 꾸미기', previewTheme: _displayTheme), ), body: ListenableBuilder( listenable: _controller, @@ -233,6 +233,7 @@ class _ProfileCustomizeScreenState extends State { selected: false, enabled: false, onTap: null, + theme: _displayTheme, ), ), const SizedBox(height: 12), @@ -244,6 +245,7 @@ class _ProfileCustomizeScreenState extends State { selected: false, enabled: false, onTap: null, + theme: _displayTheme, ), ), ], @@ -301,6 +303,8 @@ class _CategoryTile extends StatelessWidget { // 👀 미리보기 중인 테마 색상 - selected일 때만 의미가 있다 (기본 프로필 타일 전용). final Color? previewPrimary; final Color? previewSecondary; + // 🚧 "준비중" 비활성 타일의 은은한 틴트용 - 커스텀창의 체험하기 미리보기를 따라간다. + final ProfileTheme? theme; const _CategoryTile({ required this.title, @@ -311,6 +315,7 @@ class _CategoryTile extends StatelessWidget { required this.onTap, this.previewPrimary, this.previewSecondary, + this.theme, }); @override @@ -321,7 +326,9 @@ class _CategoryTile extends StatelessWidget { ? Colors.transparent : (selected ? AppPalette.ink - : (enabled ? AppPalette.paper : AppPalette.linen)), + : (enabled + ? AppPalette.paper + : (theme?.surfaceAlt ?? AppPalette.linen))), borderRadius: BorderRadius.circular(20), child: InkWell( borderRadius: BorderRadius.circular(20), @@ -340,7 +347,9 @@ class _CategoryTile extends StatelessWidget { border: Border.all( color: hasPreview ? previewSecondary! - : (selected ? AppPalette.ink : AppPalette.sage), + : (selected + ? AppPalette.ink + : (theme?.border ?? AppPalette.sage)), width: hasPreview ? 2 : 1, ), ), diff --git a/lib/ui/title_pill.dart b/lib/ui/title_pill.dart index 80df533..5bb598c 100644 --- a/lib/ui/title_pill.dart +++ b/lib/ui/title_pill.dart @@ -4,18 +4,24 @@ // 공유하는 위젯이라 여기 하나만 고치면 모든 화면의 제목 배경이 한번에 바뀐다. import 'package:flutter/material.dart'; import '../theme/app_palette.dart'; +import '../theme/profile_themes.dart'; import '../theme/theme_sync.dart'; class TitlePill extends StatelessWidget { final String text; - const TitlePill(this.text, {super.key}); + /// 🎨 프로필 꾸미기 화면의 "체험하기" 미리보기처럼, 이 화면 안에서만 임시로 + /// 보여줄 테마가 있을 때 넘긴다. 넘기면 전역 장착 테마보다 이게 우선한다. + final ProfileTheme? previewTheme; + + const TitlePill(this.text, {super.key, this.previewTheme}); @override Widget build(BuildContext context) { return ValueListenableBuilder( valueListenable: globalProfileTheme, - builder: (context, theme, _) { + builder: (context, globalTheme, _) { + final theme = previewTheme ?? globalTheme; return Padding( padding: const EdgeInsets.only(top: 8), child: Container(