TitlePill이 전역(globalProfileTheme, 실제 장착된 테마)만 구독하고 있어서, 커스텀창 안에서 체험하기로 다른 템플릿을 미리보는 중에도 제목 알약은 실제 장착된 테마 색 그대로 남아있었다. TitlePill에 previewTheme 파라미터를 추가해 넘기면 전역 테마보다 우선하도록 하고, 커스텀창에서 자신의 _displayTheme(체험 중인 테마)를 넘기게 했다. "랭킹·친구창 배경"/"출석·그룹창 표시" 준비중 타일도 같은 이유로 실제 장착된 테마(AppPalette.linen/sage, 전역)를 쓰고 있어서 체험하기를 눌러도 안 바뀌던 것을, _CategoryTile에 theme 파라미터를 추가해 _displayTheme을 쓰도록 고쳤다.
47 lines
1.8 KiB
Dart
47 lines
1.8 KiB
Dart
// 🪶 검정 AppBar 대신 쓰는 둥근 제목 알약. 모든 화면이 똑같은 폰트/크기를 쓰고,
|
|
// 화면 맨 위에 딱 붙어 보이지 않도록 위쪽에 살짝 여백을 둔다.
|
|
// 🛍️ 프로필 꾸미기 템플릿을 장착하면 이 알약 배경도 같이 바뀐다 - 앱 전체가
|
|
// 공유하는 위젯이라 여기 하나만 고치면 모든 화면의 제목 배경이 한번에 바뀐다.
|
|
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;
|
|
|
|
/// 🎨 프로필 꾸미기 화면의 "체험하기" 미리보기처럼, 이 화면 안에서만 임시로
|
|
/// 보여줄 테마가 있을 때 넘긴다. 넘기면 전역 장착 테마보다 이게 우선한다.
|
|
final ProfileTheme? previewTheme;
|
|
|
|
const TitlePill(this.text, {super.key, this.previewTheme});
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return ValueListenableBuilder(
|
|
valueListenable: globalProfileTheme,
|
|
builder: (context, globalTheme, _) {
|
|
final theme = previewTheme ?? globalTheme;
|
|
return Padding(
|
|
padding: const EdgeInsets.only(top: 8),
|
|
child: Container(
|
|
padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 10),
|
|
decoration: BoxDecoration(
|
|
color: theme?.secondary ?? AppPalette.ink,
|
|
borderRadius: BorderRadius.circular(999),
|
|
),
|
|
child: Text(
|
|
text,
|
|
style: const TextStyle(
|
|
color: Colors.white,
|
|
fontWeight: FontWeight.bold,
|
|
fontSize: 15,
|
|
),
|
|
),
|
|
),
|
|
);
|
|
},
|
|
);
|
|
}
|
|
}
|