HOME 을 Figma 「홈」 구성으로 — TODAY'S QUEST · 미니맵·확장 맵(프로토타입 v6.2) · 행성 정보 박스 · 인큐베이터 · 아티스트 소식 · HOT ARCHIVE · 인기 K-INSIDE

This commit is contained in:
Sn-Kinos
2026-10-05 16:29:41 +09:00
parent f84d696c21
commit 54d0b23260
45 changed files with 3448 additions and 1111 deletions
@@ -10,8 +10,11 @@ import '../../../core/i18n/app_locale.dart';
///
/// ponytail: `quests` 문서(설계서 §2.8)에 이미지 필드가 없어 유형과 제목으로 고른다.
/// 서버가 이미지 URL 을 주게 되면 그 값으로 바꾼다. 맞는 것이 없으면 기본 아이콘이다.
String questImage(QuestCard card) {
switch (card.type) {
String questImage(QuestCard card) => questImageFor(card.type, card.title);
/// [questImage] 를 카드 없이 — HOME 「TODAY'S QUEST」 줄은 요약([QuestSummary])만 들고 있다.
String questImageFor(QuestType? type, String title) {
switch (type) {
case QuestType.attend:
return 'assets/figma/quest-img-stamp.png';
case QuestType.steps:
@@ -20,7 +23,6 @@ String questImage(QuestCard card) {
return 'assets/figma/quest-img-truck.png';
default:
}
final title = card.title;
if (title.contains('출석')) return 'assets/figma/quest-img-stamp.png';
if (title.contains('좋아요')) return 'assets/figma/quest-img-heart.png';
if (title.contains('댓글')) return 'assets/figma/quest-img-bubble.png';
@@ -33,9 +35,10 @@ String questImage(QuestCard card) {
/// 목록의 아이콘 칸 — #2e2e2e r16 50 칸 안에 42 이미지.
class QuestIconBox extends StatelessWidget {
const QuestIconBox({super.key, required this.card});
const QuestIconBox({super.key, required this.image});
final QuestCard card;
/// 에셋 경로 — [questImage] · [questImageFor].
final String image;
@override
Widget build(BuildContext context) {
@@ -47,7 +50,7 @@ class QuestIconBox extends StatelessWidget {
color: const Color(0xFF2E2E2E),
borderRadius: BorderRadius.circular(16),
),
child: Image.asset(questImage(card), width: 42, height: 42),
child: Image.asset(image, width: 42, height: 42),
);
}
}
@@ -113,7 +116,7 @@ class QuestCardTile extends StatelessWidget {
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
QuestIconBox(card: card),
QuestIconBox(image: questImage(card)),
const SizedBox(width: 10),
Expanded(
child: Column(
@@ -335,7 +338,7 @@ class QuestAdminRow extends StatelessWidget {
: null,
child: Row(
children: [
QuestIconBox(card: card),
QuestIconBox(image: questImage(card)),
const SizedBox(width: 19),
Expanded(
child: Column(