How to Create a 2D Snake Game in Flutter

Jan 17 2023 · Dart 2.17, Flutter 3.0, Android Studio or VS Code

Part 1: How to Create a 2D Snake Game in Flutter

12. Show Game Over Dialog

Episode complete

Play next episode

Next
About this episode
Leave a rating/review
See forum comments
Cinema mode Mark complete Download course materials
Previous episode: 11. Detecting Collisions Next episode: 13. Restarting the Game

Get immediate access to this and 4,000+ other videos and books.

Take your career further with a Kodeco Personal Plan. With unlimited access to over 40+ books and 4,000+ professional videos in a single subscription, it's simply the best investment you can make in your development career.

Learn more Already a subscriber? Sign in.

Notes: 12. Show Game Over Dialog

Add detectCollision to the getNextPosition method.

Heads up... You’re accessing parts of this content for free, with some sections shown as obfuscated text.

Heads up... You’re accessing parts of this content for free, with some sections shown as obfuscated text.

Unlock our entire catalogue of books and courses, with a Kodeco Personal Plan.

Unlock now

In this episode, you will be using the provided showGameOverDialog method to display a game-over dialog to the user when the Snake collides with the play-area boundaries. The showGameOverDialog method is provided as part of the starter project.

Offset getNextPosition(Offset position) {
    ...
    if (detectCollision(position) == true) {
        if (timer != null && timer.isActive) timer.cancel();
        showGameOverDialog(); // Add this
        return position;
    }
    ...
    return nextPosition;
}
Future<Offset> getNextPosition(Offset position) async {
    ...

    if (detectCollision(position) == true) {
      if (timer != null && timer.isActive) timer.cancel();
      await Future.delayed(Duration(milliseconds: 500), () => showGameOverDialog());
      return position;
    }
    ...
}
void draw() async {
    ...
    // Update this
    positions[0] = await getNextPosition(positions[0]);
}