From 8314aea5781f891bef905076fe5d1be2e6bf034c Mon Sep 17 00:00:00 2001 From: JiWoong Sul Date: Fri, 12 Dec 2025 15:35:46 +0900 Subject: [PATCH] =?UTF-8?q?fix(ui):=20=ED=80=98=EC=8A=A4=ED=8A=B8=20?= =?UTF-8?q?=EB=A6=AC=EC=8A=A4=ED=8A=B8=EB=A5=BC=20=EC=9B=90=EB=B3=B8?= =?UTF-8?q?=EC=B2=98=EB=9F=BC=20=ED=9E=88=EC=8A=A4=ED=86=A0=EB=A6=AC=20?= =?UTF-8?q?=ED=98=95=ED=83=9C=EB=A1=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - _buildQuestList에서 questHistory를 리스트로 표시 - 완료된 퀘스트: 체크 표시 + 취소선 - 현재 퀘스트: 화살표 아이콘 - 원본 PQ의 Quests TListView와 동일한 동작 --- lib/src/features/game/game_play_screen.dart | 46 ++++++++++++++------- 1 file changed, 32 insertions(+), 14 deletions(-) diff --git a/lib/src/features/game/game_play_screen.dart b/lib/src/features/game/game_play_screen.dart index a6b228c..7dc61ed 100644 --- a/lib/src/features/game/game_play_screen.dart +++ b/lib/src/features/game/game_play_screen.dart @@ -656,33 +656,51 @@ class _GamePlayScreenState extends State Widget _buildQuestList(GameState state) { final l10n = L10n.of(context); - final questCount = state.progress.questCount; - if (questCount == 0) { + final questHistory = state.progress.questHistory; + + if (questHistory.isEmpty) { return Center( child: Text(l10n.noActiveQuests, style: const TextStyle(fontSize: 11)), ); } - // 현재 퀘스트 캡션이 있으면 표시 - final currentTask = state.progress.currentTask; - return ListView( + // 원본처럼 퀘스트 히스토리를 리스트로 표시 + // 완료된 퀘스트는 체크박스, 현재 퀘스트는 화살표 + return ListView.builder( + itemCount: questHistory.length, padding: const EdgeInsets.symmetric(horizontal: 8), - children: [ - Row( + itemBuilder: (context, index) { + final quest = questHistory[index]; + final isCurrentQuest = index == questHistory.length - 1 && !quest.isComplete; + + return Row( children: [ - const Icon(Icons.arrow_right, size: 14), + if (isCurrentQuest) + const Icon(Icons.arrow_right, size: 14) + else + Icon( + quest.isComplete + ? Icons.check_box + : Icons.check_box_outline_blank, + size: 14, + color: quest.isComplete ? Colors.green : Colors.grey, + ), + const SizedBox(width: 4), Expanded( child: Text( - currentTask.caption.isNotEmpty - ? currentTask.caption - : l10n.questNumber(questCount), - style: const TextStyle(fontSize: 11), + quest.caption, + style: TextStyle( + fontSize: 11, + decoration: quest.isComplete + ? TextDecoration.lineThrough + : TextDecoration.none, + ), overflow: TextOverflow.ellipsis, ), ), ], - ), - ], + ); + }, ); }