A 3x3x3 Rubik's Cube solver made with Flutter

Rubiks Solver

Generated by the Very Good CLI ?

A 3x3x3 Rubik’s Cube solver created by Very Good CLI.

The app uses Herbert Kociemba’s two-phase algorithm, thanks to cuber package.


Getting Started ?

This project contains 3 flavors:

  • development
  • staging
  • production

To run the desired flavor either use the launch configuration in VSCode/Android Studio or use the following commands:

# Development
$ flutter run --flavor development --target lib/main_development.dart

# Staging
$ flutter run --flavor staging --target lib/main_staging.dart

# Production
$ flutter run --flavor production --target lib/main_production.dart

*Rubiks Solver works on iOS, Android, Web, and Windows.


Running Tests ?

To run all unit and widget tests use the following command:

flutter test --coverage --test-randomize-ordering-seed random

To view the generated coverage report you can use lcov.

# Generate Coverage Report
$ genhtml coverage/lcov.info -o coverage/

# Open Coverage Report
$ open coverage/index.html

Working with Translations ?

This project relies on flutter_localizations and follows the official internationalization guide for Flutter.

Adding Strings

  1. To add a new localizable string, open the app_en.arb file at lib/l10n/arb/app_en.arb.

    {
        "@@locale": "en",
        "counterAppBarTitle": "Counter",
        "@counterAppBarTitle": {
            "description": "Text shown in the AppBar of the Counter Page"
        }
    }
    
  2. Then add a new key/value and description

    {
        "@@locale": "en",
        "counterAppBarTitle": "Counter",
        "@counterAppBarTitle": {
            "description": "Text shown in the AppBar of the Counter Page"
        },
        "helloWorld": "Hello World",
        "@helloWorld": {
            "description": "Hello World Text"
        }
    }
    
  3. Use the new string

    import 'package:rubiks_solver/l10n/l10n.dart';
    
    @override
    Widget build(BuildContext context) {
      final l10n = context.l10n;
      return Text(l10n.helloWorld);
    }

Adding Supported Locales

Update the CFBundleLocalizations array in the Info.plist at ios/Runner/Info.plist to include the new locale.

    ...

    <key>CFBundleLocalizations</key>
    <array>
        <string>en</string>
        <string>es</string>
    </array>

    ...

Adding Translations

  1. For each supported locale, add a new ARB file in lib/l10n/arb.

    ├── l10n
    │   ├── arb
    │   │   ├── app_en.arb
    │   │   └── app_es.arb
    
  2. Add the translated strings to each .arb file:

    app_en.arb

    {
        "@@locale": "en",
        "counterAppBarTitle": "Counter",
        "@counterAppBarTitle": {
            "description": "Text shown in the AppBar of the Counter Page"
        }
    }
    

    app_es.arb

    {
        "@@locale": "es",
        "counterAppBarTitle": "Contador",
        "@counterAppBarTitle": {
            "description": "Texto mostrado en la AppBar de la página del contador"
        }
    }
    

GitHub

View Github