flutter-team-archive/io_flip
Google I/O 2023 FLIP AI가 디자인한 카드 게임, Flutter 및 Firebase로 구현
- Stars
- 689
- Forks
- 123
- 최근 푸시(UTC)
- 2026. 6. 4.
- 프로젝트 상태
- 보관됨
사용 중인 의존성
의존성 목록 46 개
- api_client
{"path":"packages/api_client"} - audioplayers
^3.0.1 - authentication_repository
{"path":"packages/authentication_repository"} - bloc
^8.1.1 - cloud_firestore
^4.5.0 - code_text_field
^1.1.0 - collection
^1.17.0 - config_repository
{"path":"packages/config_repository"} - connection_repository
{"path":"packages/connection_repository"} - cross_file
^0.3.3+4 - device_info_plus
^8.2.2 - equatable
^2.0.5 - firebase_app_check
^0.1.2 - firebase_auth
^4.4.0 - firebase_core
^2.5.0 - firebase_crashlytics
^3.1.0 - firebase_storage
^11.1.0 - flame
{"git":{"url":"https://github.com/willhlas/flame","path":"packages/flame","ref":"main"}} - flutter
{"sdk":"flutter"} - flutter_bloc
^8.1.2 - flutter_highlight
^0.7.0 - flutter_localizations
{"sdk":"flutter"} - flutter_svg
^2.0.5 - game_domain
{"path":"api/packages/game_domain"} - game_script_machine
{"path":"api/packages/game_script_machine"} - go_router
^6.5.8 - highlight
^0.7.0 - intl
^0.18.0 - io_flip_ui
{"path":"packages/io_flip_ui"} - logging
^1.1.1 - match_maker_repository
{"path":"packages/match_maker_repository"} - provider
^6.0.5 - share_plus
^6.3.1 - shared_preferences
^2.1.0 - styled_text
^7.0.0 - url_launcher
^6.1.10 - bloc_test개발 의존성
^9.1.1 - build_runner개발 의존성
^2.3.3 - fake_async개발 의존성
^1.3.1 - flutter_gen_runner개발 의존성
^5.3.0 - flutter_test개발 의존성
{"sdk":"flutter"} - mocktail개발 의존성
^0.3.0 - mocktail_image_network개발 의존성
^0.3.1 - plugin_platform_interface개발 의존성
^2.1.4 - url_launcher_platform_interface개발 의존성
^2.1.2 - very_good_analysis개발 의존성
^4.0.0
원본 README
아래는 영문 원문 스냅샷입니다. 최신 내용은 GitHub에서 확인하세요.
README 펼치기 / 접기
I/O FLIP
io_flip coverage style: very good analysis
An AI-designed card game built with Flutter and Firebase for Google I/O 2023.
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 🚀
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
*I/O FLIP works on Web for desktop and mobile.
Loading initial data into database
Check the data loader docs for documentation on how the initial data is loaded.
Running the loading testing bot locally
Flop is a loading testing bot written in Flutter that runs on web meant to help testing the scaling of the backend of the game.
To execute it in the staging environment, open a terminal an execute:
./scripts/start_flop_webserver.sh <ENCRYPTION_KEY> <ENCRYPTION_IV> <RECAPTCHA_KEY> <APPCHECK_DEBUG_TOKEN>
You will be able to open the url where Flop started and check the progress of the bot run.
Which page represents one instance of Flop, to start several instance at the same time,
the scripts/spam_flop.sh can be used, this scripts needs to receive the port where Flop
started, so assuming that flop is running on http://localhost:54678, run:
./scripts/spam_flop.sh 54678
The same can be accomplished by using the army.html page that is bundled in the in it.
When loaded you will be able to select how many Flop instances to load, and it is also possible
to autoload instances of the bot by adding a # with the number of desired bots to spawn.
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:io_flip/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
- 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"
}
}