Tracing Game Flutter Package

A Flutter game that lets users trace words , characters and geometric shapes to help users practice tracing.

Installation

To use the tracing_game package in your Flutter project, follow these steps:

  1. Open your pubspec.yaml file.
  2. Add the tracing_game package to your dependencies section:
dependencies:
  flutter:
    sdk: flutter
  tracing_game: ^0.0.4+1
  1. Run the following command in your terminal to install the package:
flutter pub get

Features

Tracing of English characters (both lower and upper case) and all Arabic characters. Tracing of English numbers from 1 to 10. Tracing of English words and numbers. Tracing of geometric shapes like rectangles, circles, and triangles. Interactive game-like experience with feedback. Supports custom colors and tracing options for customization. Supports multiple screens

ezgif com-video-to-gif-converter

Screenshot_1737029029

Screenshot_1737052171

Screenshot_1737029980

Screenshot_1737029847

Screenshot_1737029119

Screenshot_1737029513

Example

Tracing Words

In the TracingWordsGame, you can trace entire English words and numbers, including spaces between words. The TracingWordGame accepts a list of TraceWordModel objects, where each TraceWordModel contains a word (string) and TraceShapeOptions for customizing the appearance of the traced shapes.

Example:

TracingWordGame(
  words: [
    TraceWordModel(
      word: 'I Have',
      traceShapeOptions: const TraceShapeOptions(
        indexColor: Colors.green,
      ),
    ),
  ],
),

Tracing character

The TracingCharsGame accepts a list of TraceCharsModel objects that will be displayed on the screen. Each TraceCharsModel contains a list of TraceCharModel objects. The TraceCharModel accepts a character (char) and TraceShapeOptions for customizing the color and appearance of the traced shape.

Example:

TracingCharsGame(
  showAnchor: true,
  traceShapeModel: [
    TraceCharsModel(chars: [
      TraceCharModel(
        char: 'F',
        traceShapeOptions: const TraceShapeOptions(
          innerPaintColor: Colors.orange
        ),
      ),
      TraceCharModel(
        char: 'f',
        traceShapeOptions: const TraceShapeOptions(
          innerPaintColor: Colors.orange
        ),
      ),
    ]),
    TraceCharsModel(chars: [
      TraceCharModel(
        char: 'a',
        traceShapeOptions: const TraceShapeOptions(
          innerPaintColor: Colors.orange
        ),
      ),
      TraceCharModel(
        char: 'A',
        traceShapeOptions: const TraceShapeOptions(
          innerPaintColor: Colors.orange
        ),
      ),
    ]),
    TraceCharsModel(chars: [
      TraceCharModel(
        char: '1',
        traceShapeOptions: const TraceShapeOptions(
          innerPaintColor: Colors.orange
        ),
      ),
      TraceCharModel(
        char: '4',
        traceShapeOptions: const TraceShapeOptions(
          innerPaintColor: Colors.orange
        ),
      ),
    ]),
  ],
),

Tracing Geometric Shapes

In this example, the tracing of geometric shapes like rectangles, circles, and triangles (4 types) is supported.

The TracingGeometricShapesGame accepts a list of TraceGeoMetricShapeModel objects, which will be displayed on the screen. Each TraceGeoMetricShapeModel contains a list of MathShapeWithOption objects. The MathShapeWithOption accepts a MathShapes enum to define the type of shape (e.g., circle, rectangle, triangle) and TraceShapeOptions to customize the color and appearance of the traced shape.

Example:

TracingGeometricShapesGame(
  traceGeoMetricShapeModels: [
    TraceGeoMetricShapeModel(shapes: [
      MathShapeWithOption(
        shape: MathShapes.circle,
        traceShapeOptions: const TraceShapeOptions(
          innerPaintColor: Colors.orange
        ),
      ),
      MathShapeWithOption(
        shape: MathShapes.triangle1,
        traceShapeOptions: const TraceShapeOptions(
          innerPaintColor: Colors.orange
        ),
      ),
    ]),
    TraceGeoMetricShapeModel(shapes: [
      MathShapeWithOption(
        shape: MathShapes.rectangle,
        traceShapeOptions: const TraceShapeOptions(
          innerPaintColor: Colors.orange
        ),
      ),
      MathShapeWithOption(
        shape: MathShapes.triangle2,
        traceShapeOptions: const TraceShapeOptions(
          innerPaintColor: Colors.orange
        ),
      ),
    ]),
  ],
),

Customizing the Tracing Games

You can customize the tracing games by providing different shapes, colors, and configurations. Here are some options:

Name Type Description
traceShapeModel List A list of traceable shapes or characters
showAnchor bool Show anchor finger for better tracing guidance
traceShapeOptions TraceShapeOptions Options for customizing the appearance of the traced shapes or characters

Available Callbacks

You can also attach various callback functions to track the progress and state of the tracing game:

  • onTracingUpdated: This callback is triggered when the tracing progress is updated. It provides the current tracing index, which you can use to track the player's progress.

    onTracingUpdated: (int currentTracingIndex) async {
        print('/////onTracingUpdated:' + currentTracingIndex.toString());
    }
    
  • onGameFinished: This callback is triggered when the game is finished. It provides the screen index of the last screen.

    onGameFinished: (int screenIndex) async {
        print('/////onGameFinished:' + screenIndex.toString());
    }
    
  • onCurrentTracingScreenFinished: This callback is triggered when the current tracing screen is completed. It provides the index of the current tracing screen.

    onCurrentTracingScreenFinished: (int currentScreenIndex) async {
        print('/////onCurrentTracingScreenFinished:' + currentScreenIndex.toString());
    }
    

By utilizing these options and callbacks, you can fully customize the behavior and appearance of the tracing game to suit your needs.


TraceShapeOptions Class Properties:

Name Type Description
outerPaintColor Color Color of the outer stroke when tracing a shape or character.
innerPaintColor Color Color of the inner stroke or fill when tracing a shape or character.
dottedColor Color Color of the dotted lines for trace instructions.
indexColor Color Color for the index or guide path while tracing the shape.
class TraceShapeOptions {
  final Color outerPaintColor;
  final Color innerPaintColor;
  final Color dottedColor;
  final Color indexColor;

  const TraceShapeOptions({
    this.dottedColor = AppColorPhonetics.grey,
    this.indexColor = Colors.black,
    this.innerPaintColor = AppColorPhonetics.lightBlueColor6,
    this.outerPaintColor = AppColorPhonetics.lightBlueColor5,
  });
}

MathShapes Enum:

The MathShapes enum provides a set of predefined shapes that can be used in the tracing game. These shapes can be utilized as part of the traceShapeModel or other relevant configurations.

enum MathShapes {
  circle,
  triangle1,
  triangle2,
  triangle3,
  triangle4,
  rectangle,
}

Author:

Happy coding!

Libraries

tracing_game