// Combat detection if (state.pendingCombat != null && !_showingDialog) { WidgetsBinding.instance.addPostFrameCallback((_) async { if (!mounted) return; setState(() => _showingDialog = true); await showDialog( context: context, barrierDismissible: false, builder: (ctx) => CombatScreen(combat: state.pendingCombat!), ); if (mounted) { ref.read(gameProvider.notifier).clearPendingCombat(); setState(() => _showingDialog = false); } }); }