You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
When a player's throw reaches exactly 0 (winning throw), the game currently navigates straight to GameSummaryScreen. Instead, show a dialog giving the active player a chance to correct a mis-entry or, in multiplayer games, let the remaining players finish.
Dialog options
Option
When shown
Action
Rollback last throw
Always
Undo the winning dart, stay on the active game screen with the score restored
End game
Always
Confirm the win, persist the result, navigate to GameSummaryScreen
Continue
Only when 3+ players are in the game
Mark this player as finished, keep playing so remaining players can complete their game
With 2 players there is no meaningful "continue" — one wins, the other loses. The option is hidden.
Current behaviour (bug)
recordThrow() in lib/providers/game_provider.dart (~line 134) calls _db.updateGame() and sets isGameOver = true immediately on a winning throw with no user confirmation. The game is silently finalised even if the score was entered by mistake.
Acceptance criteria
Winning throw is detected before the game is persisted as finished
A non-dismissible dialog appears immediately after the winning throw is recorded in the DB
Rollback calls undoLastThrow(), closes the dialog, and restores the active game screen
End game finalises the game (sets winnerId, endDate) and navigates to GameSummaryScreen
Continue (3+ players only) marks the winner's score as 0, removes them from the active rotation, and passes the turn to the next remaining player
Description
When a player's throw reaches exactly 0 (winning throw), the game currently navigates straight to
GameSummaryScreen. Instead, show a dialog giving the active player a chance to correct a mis-entry or, in multiplayer games, let the remaining players finish.Dialog options
GameSummaryScreenCurrent behaviour (bug)
recordThrow()inlib/providers/game_provider.dart(~line 134) calls_db.updateGame()and setsisGameOver = trueimmediately on a winning throw with no user confirmation. The game is silently finalised even if the score was entered by mistake.Acceptance criteria
undoLastThrow(), closes the dialog, and restores the active game screenwinnerId,endDate) and navigates toGameSummaryScreen