A minimalistic Android puzzle game built with Flutter. Draw one continuous path through every cell on the grid — no revisits, no diagonals.
cd trace
flutter pub get
flutter runTarget a connected Android device or emulator.
Levels live in lib/data/levels.dart. Each Level specifies:
rows/cols— grid sizestart—GridPos(row, col)where the path must beginblocked— optional list of impassable cells
Level(
id: 11,
rows: 5,
cols: 5,
start: GridPos(0, 0),
blocked: [GridPos(2, 2)],
)Add a new entry to kLevels and increase progression in progress_provider.dart if needed.
A level is won when:
- The path length equals the number of playable cells (
rows × cols − blocked). - Every playable cell appears exactly once in the path.
Moves are rejected if they leave the grid, enter a blocked cell, step non-adjacently, or revisit a cell. Dragging back onto the previous cell backtracks one step.
lib/models/—Level,GridPos,GameStatelib/providers/— Riverpod game + progress statelib/widgets/trace_painter.dart— grid and path renderinglib/screens/— game and level select