FLUTTER ECOSYSTEM

flutter-team-archive/pinball

Google I/O 2022 Pinball game built with Flutter and Firebase

pinball project cover
Stars
2.3K
Forks
273
Last push (UTC)
Jun 8, 2026
Project status
Archived
Flutter archive GitHub avatar
GITHUB Organization

Flutter archive ↗

Archive of inactive repos formerly part of https://github.com/flutter

LanguagesDartHTMLJavaScript

Dependencies used

Dependency list 28 items
  • authentication_repository{"path":"packages/authentication_repository"}
  • bloc^8.1.4
  • cloud_firestore^5.0.2
  • equatable^2.0.3
  • firebase_auth^5.1.1
  • firebase_core^3.1.1
  • flame^1.18.0
  • flame_bloc^1.12.0
  • flame_forge2d^0.18.1
  • flutter{"sdk":"flutter"}
  • flutter_bloc^8.0.1
  • flutter_localizations{"sdk":"flutter"}
  • geometry{"path":"packages/geometry"}
  • intl^0.19.0
  • leaderboard_repository{"path":"packages/leaderboard_repository"}
  • pinball_audio{"path":"packages/pinball_audio"}
  • pinball_components{"path":"packages/pinball_components"}
  • pinball_flame{"path":"packages/pinball_flame"}
  • pinball_theme{"path":"packages/pinball_theme"}
  • pinball_ui{"path":"packages/pinball_ui"}
  • platform_helper{"path":"packages/platform_helper"}
  • share_repository{"path":"packages/share_repository"}
  • url_launcher^6.1.0
  • bloc_testDevelopment^9.0.2
  • flame_testDevelopment^1.3.0
  • flutter_testDevelopment{"sdk":"flutter"}
  • mocktailDevelopment^1.0.4
  • very_good_analysisDevelopment^6.0.0

Original README

English project snapshot. Visit GitHub for the latest content.

Expand / collapse project README

I/O Pinball

Pinball Header

io_pinball coverage style: very good analysis License: MIT

A Pinball game built with Flutter and Firebase for Google I/O 2022.

Try it now and learn about how it's made.

Built by Very Good Ventures in partnership with Google

Created using Very Good CLI 🤖


Getting Started 🚀

Firebase

First, please create a Firebase project for development. After you create your project, remember to activate the following features: - Authentication with the anonymous option - Firestore with the rules in firestore.rules.

Next, use the instructions on Firebase website to set up the flutterfire_cli.

Allow it to override the lib/firebase_options.dart file with your project settings.

Running locally

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

$ flutter run -d chrome

*I/O Pinball works on Web for desktop and mobile.


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"
    }
}
  1. 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"
    }
}
  1. Use the new string
import 'package:pinball/l10n/l10n.dart';

@override
Widget build(BuildContext context) {
  final l10n = context.l10n;
  return Text(l10n.helloWorld);
}
Adding Translations
  1. For each supported locale, add a new ARB file in lib/l10n/arb.
├── l10n
│   ├── arb
│   │   ├── app_en.arb
│   │   └── app_es.arb
  1. 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"
    }
}