- Notifications
You must be signed in to change notification settings - Fork106
Google I/O 2023 FLIP AI-designed card game built with Flutter & Firebase
License
flutter/io_flip
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
An AI-designed card game built withFlutter andFirebase forGoogle I/O 2023.
Try it now andlearn about how it's made.
Built byVery Good Ventures in partnership with Google
Created usingVery Good CLI 🤖
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.
Checkthe data loader docs for documentation on how the initial data is loaded.
Flop is a loading testing bot written in Flutter that runs on web meant to help testingthe 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,thescripts/spam_flop.sh
can be used, this scripts needs to receive the port where Flopstarted, so assuming that flop is running onhttp://localhost:54678
, run:
./scripts/spam_flop.sh 54678
The same can be accomplished by using thearmy.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 possibleto autoload instances of the bot by adding a # with the number of desired bots to spawn.
To run all unit and widget tests use the following command:
$ fluttertest --coverage --test-randomize-ordering-seed random
To view the generated coverage report you can uselcov.
# Generate Coverage Report$ genhtml coverage/lcov.info -o coverage/# Open Coverage Report$ open coverage/index.html
This project relies onflutter_localizations and follows theofficial internationalization guide for Flutter.
- To add a new localizable string, open the
app_en.arb
file 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';@overrideWidgetbuild(BuildContext context) {final l10n= context.l10n;returnText(l10n.helloWorld);}
Update theCFBundleLocalizations
array in theInfo.plist
atios/Runner/Info.plist
to include the new locale.
... <key>CFBundleLocalizations</key><array><string>en</string><string>es</string></array> ...
- 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
.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" }}