finds.dev← search

// the find

flutter-team-archive/pinball

★ 2,313 · Dart · MIT · updated Jun 2026

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

A Flutter web pinball game built by Very Good Ventures for Google I/O 2022, using Flame for game physics and Firebase for anonymous auth and leaderboard. It's a showcase project — the real audience is Flutter developers wanting to see how a non-trivial 2D game gets structured in Dart, not people who want to ship a game engine.

The mono-repo package split is well thought out: pinball_components, pinball_audio, leaderboard_repository, and authentication_repository are each independently testable with their own CI workflows. BLoC is used consistently for state (game_bloc, backbox_bloc, start_game_bloc) rather than mixing patterns. Test coverage with randomized ordering seed is a good habit that catches ordering dependencies. The behavior composition pattern — separate Flame components for things like AnimatronicLoopingBehavior and ScoringBehavior — keeps the game component tree flat and readable.

It's a 2022 conference demo and shows its age: the live URL likely still works but nothing about this repo signals ongoing maintenance, and Flame has shipped breaking changes since. Web-only (flutter run -d chrome) with no path to mobile despite claiming iOS/Android Flame supports it — the physics and asset pipeline were clearly tuned for one target. Firebase Functions are in plain JS (functions/index.js) sitting alongside the Dart codebase, which means two languages, two toolchains, and no type safety crossing that boundary. The README setup requires manually wiring your own Firebase project before you can run anything locally, which is a real friction point for anyone wanting to study the code.

View on GitHub →

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →