flutter-team-archive/pinball
使用 Flutter 和 Firebase 构建的 Google I/O 2022 彩球游戏
- Stars
- 2314
- Forks
- 273
- 最近推送(UTC)
- 2026年6月8日
- 项目状态
- 已归档
使用的依赖
依赖清单 28 项
- 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_test开发依赖
^9.0.2 - flame_test开发依赖
^1.3.0 - flutter_test开发依赖
{"sdk":"flutter"} - mocktail开发依赖
^1.0.4 - very_good_analysis开发依赖
^6.0.0
原始 README
以下为英文项目原文快照,最新内容请访问 GitHub。
展开 / 收起项目 README
I/O Pinball
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
- To add a new localizable string, open the
app_en.arbfile atlib/l10n/arb/app_en.arb.
{
"@@locale": "en",
"counterAppBarTitle": "Counter",
"@counterAppBarTitle": {
"description": "Text shown in the AppBar of the Counter Page"
}
}
- 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"
}
}
- 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
- For each supported locale, add a new ARB file in
lib/l10n/arb.
├── l10n
│ ├── arb
│ │ ├── app_en.arb
│ │ └── app_es.arb
- Add the translated strings to each
.arbfile:
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"
}
}