From 6c0d6b8a7f9904030959afd13fdcef47265a9389 Mon Sep 17 00:00:00 2001 From: Calcitem Date: Thu, 27 May 2021 23:35:37 +0800 Subject: [PATCH] flutter: dev_mode: Add Environment Variables Page --- flutter-init.sh | 8 +++ src/ui/flutter_app/lib/l10n/intl_de.arb | 4 ++ src/ui/flutter_app/lib/l10n/intl_en.arb | 4 ++ src/ui/flutter_app/lib/l10n/intl_zh.arb | 3 +- src/ui/flutter_app/lib/widgets/env_page.dart | 59 +++++++++++++++++++ .../lib/widgets/game_settings_page.dart | 16 ++++- src/ui/flutter_app/pubspec.yaml | 1 + 7 files changed, 93 insertions(+), 2 deletions(-) create mode 100644 src/ui/flutter_app/lib/widgets/env_page.dart diff --git a/flutter-init.sh b/flutter-init.sh index ab26ffda..ce4559e4 100644 --- a/flutter-init.sh +++ b/flutter-init.sh @@ -1,6 +1,14 @@ #!/bin/bash +ENV_FILE_PATH=assets/files +ENV_FILE=$ENV_FILE_PATH/environment_variables.txt + cd src/ui/flutter_app || exit + +mkdir -p $ENV_FILE_PATH || true +touch $ENV_FILE +export > $ENV_FILE + flutter pub get flutter pub global activate intl_utils flutter --no-color pub global run intl_utils:generate diff --git a/src/ui/flutter_app/lib/l10n/intl_de.arb b/src/ui/flutter_app/lib/l10n/intl_de.arb index ef285a85..adfc9b8c 100644 --- a/src/ui/flutter_app/lib/l10n/intl_de.arb +++ b/src/ui/flutter_app/lib/l10n/intl_de.arb @@ -923,5 +923,9 @@ "tapBackAgainToLeave": "Nochmal drücken um zu Beenden.", "@tapBackAgainToLeave": { "description": "Tap back again to leave." + }, + "environmentVariables": "Umgebungsvariablen", + "@environmentVariables": { + "description": "Environment variables" } } diff --git a/src/ui/flutter_app/lib/l10n/intl_en.arb b/src/ui/flutter_app/lib/l10n/intl_en.arb index 0e8e166f..4155b9b6 100644 --- a/src/ui/flutter_app/lib/l10n/intl_en.arb +++ b/src/ui/flutter_app/lib/l10n/intl_en.arb @@ -923,5 +923,9 @@ "tapBackAgainToLeave": "Tap back again to leave.", "@tapBackAgainToLeave": { "description": "Tap back again to leave." + }, + "environmentVariables": "Environment variables", + "@environmentVariables": { + "description": "Environment variables" } } diff --git a/src/ui/flutter_app/lib/l10n/intl_zh.arb b/src/ui/flutter_app/lib/l10n/intl_zh.arb index ccbd53ff..c1fda2f4 100644 --- a/src/ui/flutter_app/lib/l10n/intl_zh.arb +++ b/src/ui/flutter_app/lib/l10n/intl_zh.arb @@ -230,5 +230,6 @@ "aiIsNotThinking": "电脑并非正在思考中", "autoReplay": "自动回放", "atEnd": "已经到底了", - "tapBackAgainToLeave": "再次按返回键退出应用" + "tapBackAgainToLeave": "再次按返回键退出应用", + "environmentVariables": "环境变量" } \ No newline at end of file diff --git a/src/ui/flutter_app/lib/widgets/env_page.dart b/src/ui/flutter_app/lib/widgets/env_page.dart new file mode 100644 index 00000000..5267c4d1 --- /dev/null +++ b/src/ui/flutter_app/lib/widgets/env_page.dart @@ -0,0 +1,59 @@ +/* + This file is part of Sanmill. + Copyright (C) 2019-2021 The Sanmill developers (see AUTHORS file) + + Sanmill is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Sanmill is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart' show rootBundle; +import 'package:sanmill/generated/l10n.dart'; + +class EnvironmentVariablesPage extends StatefulWidget { + @override + _EnvironmentVariablesPageState createState() => _EnvironmentVariablesPageState(); +} + +class _EnvironmentVariablesPageState extends State { + String _data = ""; + + Future _loadData() async { + final _loadedData = + await rootBundle.loadString('assets/files/environment_variables.txt'); + setState(() { + _data = _loadedData; + }); + } + + @override + Widget build(BuildContext context) { + _loadData(); + + return Scaffold( + appBar: AppBar(title: Text(S.of(context).environmentVariables), centerTitle: true), + body: ListView( + children: [ + Container( + padding: const EdgeInsets.only( + top: 16, left: 16, right: 16, bottom: 16), + child: Text( + _data != "" ? _data : 'Nothing to show', + style: TextStyle(fontFamily: 'Monospace', fontSize: 12), + textAlign: TextAlign.left, + )) + ], + ), + ); + } +} diff --git a/src/ui/flutter_app/lib/widgets/game_settings_page.dart b/src/ui/flutter_app/lib/widgets/game_settings_page.dart index 54eca12d..a91dfdf1 100644 --- a/src/ui/flutter_app/lib/widgets/game_settings_page.dart +++ b/src/ui/flutter_app/lib/widgets/game_settings_page.dart @@ -29,6 +29,7 @@ import 'package:sanmill/widgets/settings_list_tile.dart'; import 'package:sanmill/widgets/settings_switch_list_tile.dart'; import 'dialog.dart'; +import 'env_page.dart'; import 'list_item_divider.dart'; class Developer { @@ -264,7 +265,20 @@ class _GameSettingsPageState extends State { value: Config.isAutoRestart, onChanged: setIsAutoRestart, titleString: S.of(context).isAutoRestart, - ) + ), + ListItemDivider(), + SettingsListTile( + context: context, + titleString: S.of(context).environmentVariables, + onTap: () { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => EnvironmentVariablesPage(), + ), + ); + }, + ), ], ) : SizedBox(height: 1), diff --git a/src/ui/flutter_app/pubspec.yaml b/src/ui/flutter_app/pubspec.yaml index 59afe9ae..461556b5 100644 --- a/src/ui/flutter_app/pubspec.yaml +++ b/src/ui/flutter_app/pubspec.yaml @@ -37,6 +37,7 @@ flutter: assets: - assets/licenses/GPL-3.0.txt + - assets/files/environment_variables.txt - assets/audios/draw.mp3 - assets/audios/fly.mp3 - assets/audios/go.mp3