diff --git a/lib/src/features/game/game_play_screen.dart b/lib/src/features/game/game_play_screen.dart index 256a1e8..eeebfba 100644 --- a/lib/src/features/game/game_play_screen.dart +++ b/lib/src/features/game/game_play_screen.dart @@ -74,11 +74,16 @@ class _GamePlayScreenState extends State _lastAct = newAct; // Phase 10: 엔딩 도달 시 클리어 처리 (시네마틱 대신 클리어 다이얼로그) + // 다음 프레임에서 실행 (리스너 콜백 중 showDialog 문제 방지) if (newAct == StoryAct.ending && state.traits.level >= 100) { - _handleGameClear(state); + WidgetsBinding.instance.addPostFrameCallback((_) { + if (mounted) _handleGameClear(state); + }); } else { // 일반 Act 전환 시 시네마틱 표시 - _showCinematicForAct(newAct); + WidgetsBinding.instance.addPostFrameCallback((_) { + if (mounted) _showCinematicForAct(newAct); + }); } } }