커스텀창 체험하기 미리보기가 제목 알약/준비중 타일까지 전부 반영되게 수정

TitlePill이 전역(globalProfileTheme, 실제 장착된 테마)만 구독하고 있어서,
커스텀창 안에서 체험하기로 다른 템플릿을 미리보는 중에도 제목 알약은
실제 장착된 테마 색 그대로 남아있었다. TitlePill에 previewTheme 파라미터를
추가해 넘기면 전역 테마보다 우선하도록 하고, 커스텀창에서 자신의
_displayTheme(체험 중인 테마)를 넘기게 했다.

"랭킹·친구창 배경"/"출석·그룹창 표시" 준비중 타일도 같은 이유로 실제 장착된
테마(AppPalette.linen/sage, 전역)를 쓰고 있어서 체험하기를 눌러도 안 바뀌던
것을, _CategoryTile에 theme 파라미터를 추가해 _displayTheme을 쓰도록 고쳤다.
This commit is contained in:
2026-10-01 23:30:24 +00:00
parent 2a5b0a8b32
commit 383d3143c8
2 changed files with 20 additions and 5 deletions
+12 -3
View File
@@ -136,7 +136,7 @@ class _ProfileCustomizeScreenState extends State<ProfileCustomizeScreen> {
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<ProfileCustomizeScreen> {
selected: false,
enabled: false,
onTap: null,
theme: _displayTheme,
),
),
const SizedBox(height: 12),
@@ -244,6 +245,7 @@ class _ProfileCustomizeScreenState extends State<ProfileCustomizeScreen> {
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,
),
),
+8 -2
View File
@@ -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(