I/O FLIP

I/O FLIP Header

io_flip coverage style: very good analysis License: MIT

一款由 AI 设计的卡牌游戏,使用 FlutterFirebaseGoogle I/O 2023 构建。

立即尝试了解其制作过程

Very Good Ventures 与 Google 合作构建

使用 Very Good CLI 创建?


入门?

此项目包含 3 种风味

  • 开发
  • 测试
  • 生产

要运行所需的风味,可以使用 VSCode/Android Studio 中的启动配置,或使用以下命令

# 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 可在桌面和移动设备上通过 Web 运行。

将初始数据加载到数据库

请参阅 数据加载器文档,了解如何加载初始数据的文档。

在本地运行加载测试机器人

Flop 是一个用 Flutter 编写的加载测试机器人,可在 Web 上运行,旨在帮助测试游戏后端的可扩展性。

要执行它在暂存环境中,请打开终端并执行

./scripts/start_flop_webserver.sh <ENCRYPTION_KEY> <ENCRYPTION_IV> <RECAPTCHA_KEY> <APPCHECK_DEBUG_TOKEN>

您将能够打开 Flop 启动的 URL 并查看机器人运行的进度。

哪个页面代表 Flop 的一个实例,要同时启动多个实例,可以使用 scripts/spam_flop.sh,此脚本需要接收 Flop 启动的端口,因此假设 flop 正在 https://:54678 上运行,请执行

./scripts/spam_flop.sh 54678

通过使用捆绑在其内部的 army.html 页面可以实现相同的功能。加载后,您可以选择要加载的 Flop 实例数量,还可以通过添加一个 # 并指定所需的机器人数量来自动加载机器人实例。


正在运行测试?

要运行所有单元和 widget 测试,请使用以下命令

$ flutter test --coverage --test-randomize-ordering-seed random

要查看生成的覆盖率报告,您可以使用 lcov

# Generate Coverage Report
$ genhtml coverage/lcov.info -o coverage/

# Open Coverage Report
$ open coverage/index.html

正在处理翻译?

此项目依赖于 flutter_localizations,并遵循 Flutter 的官方国际化指南

添加字符串

  1. 要添加新的本地化字符串,请打开位于 lib/l10n/arb/app_en.arbapp_en.arb 文件。

{
    "@@locale": "en",
    "counterAppBarTitle": "Counter",
    "@counterAppBarTitle": {
        "description": "Text shown in the AppBar of the Counter Page"
    }
}
  1. 然后添加新的键/值和描述

{
    "@@locale": "en",
    "counterAppBarTitle": "Counter",
    "@counterAppBarTitle": {
        "description": "Text shown in the AppBar of the Counter Page"
    },
    "helloWorld": "Hello World",
    "@helloWorld": {
        "description": "Hello World Text"
    }
}
  1. 使用新字符串

import 'package:io_flip/l10n/l10n.dart';

@override
Widget build(BuildContext context) {
  final l10n = context.l10n;
  return Text(l10n.helloWorld);
}

添加支持的区域设置

更新位于 ios/Runner/Info.plistInfo.plist 中的 CFBundleLocalizations 数组,以包含新的区域设置。

    ...

    <key>CFBundleLocalizations</key>
	<array>
		<string>en</string>
		<string>es</string>
	</array>

    ...

添加翻译

  1. 对于每个支持的区域设置,请在 lib/l10n/arb 中添加一个新的 ARB 文件。

├── l10n
│   ├── arb
│   │   ├── app_en.arb
│   │   └── app_es.arb
  1. 将翻译后的字符串添加到每个 .arb 文件中

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"
    }
}

GitHub

查看 Github