Merge remote-tracking branch 'origin/hotfix/89-hotfix-correcting-links' into feature/46-implement-native-rating-dialogs

# Conflicts:
#	analysis_options.yaml
#	lib/core/constants.dart
#	lib/main.dart
#	lib/presentation/views/information_view.dart
#	lib/presentation/views/mode_selection_view.dart
#	lib/presentation/views/settings_view.dart
#	lib/presentation/views/tab_view.dart
#	lib/services/version_service.dart
#	pubspec.yaml
This commit is contained in:
2025-07-10 17:29:02 +02:00
21 changed files with 68 additions and 34 deletions

View File

@@ -12,4 +12,3 @@ linter:
unnecessary_const: true unnecessary_const: true
lines_longer_than_80_chars: false lines_longer_than_80_chars: false
constant_identifier_names: false constant_identifier_names: false

View File

@@ -1,5 +1,6 @@
arb-dir: lib/l10n arb-dir: lib/l10n/arb
template-arb-file: app_de.arb template-arb-file: app_de.arb
untranslated-messages-file: lib/l10n/untranslated_messages.json untranslated-messages-file: lib/l10n/arb/untranslated_messages.json
nullable-getter: false nullable-getter: false
output-localization-file: app_localizations.dart output-localization-file: app_localizations.dart
output-dir: lib/l10n/generated

11
lib/core/constants.dart Normal file
View File

@@ -0,0 +1,11 @@
class Constants {
static String appDevPhase = 'Beta';
static const String INSTAGRAM_LINK = 'https://instagram.felixkirchner.de';
static const String GITHUB_LINK = 'https://github1.felixkirchner.de';
static const String GITHUB_ISSUES_LINK =
'cabocounter-issues.felixkirchner.de';
static const String GITHUB_WIKI_LINK = 'cabocounter-wiki.felixkirchner.de ';
static const String EMAIL = 'cabocounter@felixkirchner.de';
static const String PRIVACY_POLICY_LINK =
'https://www.privacypolicies.com/live/1b3759d4-b2f1-4511-8e3b-21bb1626be68';
}

View File

@@ -103,6 +103,7 @@
"create_issue": "Issue erstellen", "create_issue": "Issue erstellen",
"wiki": "Wiki", "wiki": "Wiki",
"app_version": "App-Version", "app_version": "App-Version",
"privacy_policy": "Datenschutzerklärung",
"build": "Build-Nr.", "build": "Build-Nr.",
"loading": "Lädt...", "loading": "Lädt...",

View File

@@ -103,6 +103,7 @@
"create_issue": "Create Issue", "create_issue": "Create Issue",
"wiki": "Wiki", "wiki": "Wiki",
"app_version": "App Version", "app_version": "App Version",
"privacy_policy": "Privacy Policy",
"loading": "Loading...", "loading": "Loading...",
"build": "Build No.", "build": "Build No.",

View File

@@ -18,7 +18,7 @@ import 'app_localizations_en.dart';
/// `supportedLocales` list. For example: /// `supportedLocales` list. For example:
/// ///
/// ```dart /// ```dart
/// import 'l10n/app_localizations.dart'; /// import 'generated/app_localizations.dart';
/// ///
/// return MaterialApp( /// return MaterialApp(
/// localizationsDelegates: AppLocalizations.localizationsDelegates, /// localizationsDelegates: AppLocalizations.localizationsDelegates,
@@ -566,6 +566,12 @@ abstract class AppLocalizations {
/// **'App-Version'** /// **'App-Version'**
String get app_version; String get app_version;
/// No description provided for @privacy_policy.
///
/// In de, this message translates to:
/// **'Datenschutzerklärung'**
String get privacy_policy;
/// No description provided for @build. /// No description provided for @build.
/// ///
/// In de, this message translates to: /// In de, this message translates to:

View File

@@ -256,6 +256,9 @@ class AppLocalizationsDe extends AppLocalizations {
@override @override
String get app_version => 'App-Version'; String get app_version => 'App-Version';
@override
String get privacy_policy => 'Datenschutzerklärung';
@override @override
String get build => 'Build-Nr.'; String get build => 'Build-Nr.';

View File

@@ -253,6 +253,9 @@ class AppLocalizationsEn extends AppLocalizations {
@override @override
String get app_version => 'App Version'; String get app_version => 'App Version';
@override
String get privacy_policy => 'Privacy Policy';
@override @override
String get build => 'Build No.'; String get build => 'Build No.';

View File

@@ -1,5 +1,6 @@
import 'package:cabo_counter/core/custom_theme.dart'; import 'package:cabo_counter/core/custom_theme.dart';
import 'package:cabo_counter/l10n/app_localizations.dart'; import 'package:cabo_counter/l10n/app_localizations.dart';
import 'package:cabo_counter/l10n/generated/app_localizations.dart';
import 'package:cabo_counter/presentation/views/tab_view.dart'; import 'package:cabo_counter/presentation/views/tab_view.dart';
import 'package:cabo_counter/services/config_service.dart'; import 'package:cabo_counter/services/config_service.dart';
import 'package:cabo_counter/services/local_storage_service.dart'; import 'package:cabo_counter/services/local_storage_service.dart';

View File

@@ -1,7 +1,7 @@
import 'package:cabo_counter/core/custom_theme.dart'; import 'package:cabo_counter/core/custom_theme.dart';
import 'package:cabo_counter/data/game_manager.dart'; import 'package:cabo_counter/data/game_manager.dart';
import 'package:cabo_counter/data/game_session.dart'; import 'package:cabo_counter/data/game_session.dart';
import 'package:cabo_counter/l10n/app_localizations.dart'; import 'package:cabo_counter/l10n/generated/app_localizations.dart';
import 'package:cabo_counter/presentation/views/create_game_view.dart'; import 'package:cabo_counter/presentation/views/create_game_view.dart';
import 'package:cabo_counter/presentation/views/graph_view.dart'; import 'package:cabo_counter/presentation/views/graph_view.dart';
import 'package:cabo_counter/presentation/views/round_view.dart'; import 'package:cabo_counter/presentation/views/round_view.dart';

View File

@@ -1,7 +1,7 @@
import 'package:cabo_counter/core/custom_theme.dart'; import 'package:cabo_counter/core/custom_theme.dart';
import 'package:cabo_counter/data/game_manager.dart'; import 'package:cabo_counter/data/game_manager.dart';
import 'package:cabo_counter/data/game_session.dart'; import 'package:cabo_counter/data/game_session.dart';
import 'package:cabo_counter/l10n/app_localizations.dart'; import 'package:cabo_counter/l10n/generated/app_localizations.dart';
import 'package:cabo_counter/presentation/views/active_game_view.dart'; import 'package:cabo_counter/presentation/views/active_game_view.dart';
import 'package:cabo_counter/presentation/views/mode_selection_view.dart'; import 'package:cabo_counter/presentation/views/mode_selection_view.dart';
import 'package:cabo_counter/services/config_service.dart'; import 'package:cabo_counter/services/config_service.dart';

View File

@@ -1,5 +1,5 @@
import 'package:cabo_counter/data/game_session.dart'; import 'package:cabo_counter/data/game_session.dart';
import 'package:cabo_counter/l10n/app_localizations.dart'; import 'package:cabo_counter/l10n/generated/app_localizations.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:syncfusion_flutter_charts/charts.dart'; import 'package:syncfusion_flutter_charts/charts.dart';

View File

@@ -1,4 +1,5 @@
import 'package:cabo_counter/l10n/app_localizations.dart'; import 'package:cabo_counter/l10n/generated/app_localizations.dart';
import 'package:cabo_counter/utility/constants.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart';
@@ -53,19 +54,16 @@ class InformationView extends StatelessWidget {
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
children: [ children: [
IconButton( IconButton(
onPressed: () => launchUrl( onPressed: () =>
Uri.parse('https://www.instagram.com/flixcoo'), launchUrl(Uri.parse(Constants.INSTAGRAM_LINK)),
mode: LaunchMode.externalApplication),
icon: const Icon(FontAwesomeIcons.instagram)), icon: const Icon(FontAwesomeIcons.instagram)),
IconButton( IconButton(
onPressed: () => launchUrl( onPressed: () =>
Uri.parse('mailto:felix.kirchner.fk@gmail.com'), launchUrl(Uri.parse('mailto:${Constants.EMAIL}')),
mode: LaunchMode.externalApplication),
icon: const Icon(CupertinoIcons.envelope)), icon: const Icon(CupertinoIcons.envelope)),
IconButton( IconButton(
onPressed: () => launchUrl( onPressed: () =>
Uri.parse('https://www.github.com/flixcoo'), launchUrl(Uri.parse(Constants.GITHUB_LINK)),
mode: LaunchMode.externalApplication),
icon: const Icon(FontAwesomeIcons.github)), icon: const Icon(FontAwesomeIcons.github)),
], ],
), ),

View File

@@ -1,7 +1,7 @@
import 'package:cabo_counter/core/custom_theme.dart'; import 'package:cabo_counter/core/custom_theme.dart';
import 'package:cabo_counter/core/globals.dart'; import 'package:cabo_counter/core/globals.dart';
import 'package:cabo_counter/data/game_manager.dart'; import 'package:cabo_counter/data/game_manager.dart';
import 'package:cabo_counter/l10n/app_localizations.dart'; import 'package:cabo_counter/l10n/generated/app_localizations.dart';
import 'package:cabo_counter/presentation/views/active_game_view.dart'; import 'package:cabo_counter/presentation/views/active_game_view.dart';
import 'package:cabo_counter/presentation/views/create_game_view.dart'; import 'package:cabo_counter/presentation/views/create_game_view.dart';
import 'package:cabo_counter/presentation/views/settings_view.dart'; import 'package:cabo_counter/presentation/views/settings_view.dart';

View File

@@ -1,5 +1,7 @@
import 'package:cabo_counter/core/custom_theme.dart'; import 'package:cabo_counter/core/custom_theme.dart';
import 'package:cabo_counter/l10n/app_localizations.dart'; import 'package:cabo_counter/l10n/app_localizations.dart';
import 'package:cabo_counter/l10n/generated/app_localizations.dart';
import 'package:cabo_counter/utility/custom_theme.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
class ModeSelectionMenu extends StatelessWidget { class ModeSelectionMenu extends StatelessWidget {

View File

@@ -1,6 +1,6 @@
import 'package:cabo_counter/core/custom_theme.dart'; import 'package:cabo_counter/core/custom_theme.dart';
import 'package:cabo_counter/data/game_session.dart'; import 'package:cabo_counter/data/game_session.dart';
import 'package:cabo_counter/l10n/app_localizations.dart'; import 'package:cabo_counter/l10n/generated/app_localizations.dart';
import 'package:cabo_counter/services/local_storage_service.dart'; import 'package:cabo_counter/services/local_storage_service.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';

View File

@@ -1,10 +1,13 @@
import 'package:cabo_counter/core/custom_theme.dart'; import 'package:cabo_counter/core/custom_theme.dart';
import 'package:cabo_counter/l10n/app_localizations.dart'; import 'package:cabo_counter/l10n/app_localizations.dart';
import 'package:cabo_counter/l10n/generated/app_localizations.dart';
import 'package:cabo_counter/presentation/widgets/custom_form_row.dart'; import 'package:cabo_counter/presentation/widgets/custom_form_row.dart';
import 'package:cabo_counter/presentation/widgets/stepper.dart'; import 'package:cabo_counter/presentation/widgets/stepper.dart';
import 'package:cabo_counter/services/config_service.dart'; import 'package:cabo_counter/services/config_service.dart';
import 'package:cabo_counter/services/local_storage_service.dart'; import 'package:cabo_counter/services/local_storage_service.dart';
import 'package:cabo_counter/services/version_service.dart'; import 'package:cabo_counter/services/version_service.dart';
import 'package:cabo_counter/utility/constants.dart';
import 'package:cabo_counter/utility/custom_theme.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:url_launcher/url_launcher.dart'; import 'package:url_launcher/url_launcher.dart';
@@ -93,7 +96,6 @@ class _SettingsViewState extends State<SettingsView> {
setState(() { setState(() {
_stepperKey1 = UniqueKey(); _stepperKey1 = UniqueKey();
_stepperKey2 = UniqueKey(); _stepperKey2 = UniqueKey();
print('Config reset to default');
}); });
}, },
) )
@@ -142,21 +144,25 @@ class _SettingsViewState extends State<SettingsView> {
margin: EdgeInsets.zero, margin: EdgeInsets.zero,
children: [ children: [
CustomFormRow( CustomFormRow(
prefixText: AppLocalizations.of(context).create_issue, prefixText: AppLocalizations.of(context).wiki,
prefixIcon: FontAwesomeIcons.github, prefixIcon: CupertinoIcons.book,
onPressed: () => launchUrl( onPressed: () =>
Uri.parse( launchUrl(Uri.parse(Constants.GITHUB_WIKI_LINK)),
'https://github.com/flixcoo/Cabo-Counter/issues'),
mode: LaunchMode.externalApplication),
suffixWidget: const CupertinoListTileChevron(), suffixWidget: const CupertinoListTileChevron(),
), ),
CustomFormRow( CustomFormRow(
prefixText: AppLocalizations.of(context).wiki, prefixText:
prefixIcon: CupertinoIcons.book, AppLocalizations.of(context).privacy_policy,
prefixIcon: CupertinoIcons.doc_append,
onPressed: () => launchUrl( onPressed: () => launchUrl(
Uri.parse( Uri.parse(Constants.PRIVACY_POLICY_LINK)),
'https://github.com/flixcoo/Cabo-Counter/wiki'), suffixWidget: const CupertinoListTileChevron(),
mode: LaunchMode.externalApplication), ),
CustomFormRow(
prefixText: AppLocalizations.of(context).error_found,
prefixIcon: FontAwesomeIcons.github,
onPressed: () => launchUrl(
Uri.parse(Constants.GITHUB_ISSUES_LINK)),
suffixWidget: const CupertinoListTileChevron(), suffixWidget: const CupertinoListTileChevron(),
), ),
CustomFormRow( CustomFormRow(

View File

@@ -1,5 +1,6 @@
import 'package:cabo_counter/core/custom_theme.dart'; import 'package:cabo_counter/core/custom_theme.dart';
import 'package:cabo_counter/l10n/app_localizations.dart'; import 'package:cabo_counter/l10n/app_localizations.dart';
import 'package:cabo_counter/l10n/generated/app_localizations.dart';
import 'package:cabo_counter/presentation/views/information_view.dart'; import 'package:cabo_counter/presentation/views/information_view.dart';
import 'package:cabo_counter/presentation/views/main_menu_view.dart'; import 'package:cabo_counter/presentation/views/main_menu_view.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';

View File

@@ -1,4 +1,5 @@
import 'package:cabo_counter/core/globals.dart'; import 'package:cabo_counter/core/globals.dart';
import 'package:cabo_counter/utility/constants.dart';
import 'package:package_info_plus/package_info_plus.dart'; import 'package:package_info_plus/package_info_plus.dart';
class VersionService { class VersionService {
@@ -19,7 +20,7 @@ class VersionService {
if (_version == '-.-.-') { if (_version == '-.-.-') {
return getVersionNumber(); return getVersionNumber();
} }
return '${Globals.appDevPhase} $_version'; return '${Constants.appDevPhase} $_version';
} }
static String getBuildNumber() { static String getBuildNumber() {

View File

@@ -2,7 +2,7 @@ name: cabo_counter
description: "Mobile app for the card game Cabo" description: "Mobile app for the card game Cabo"
publish_to: 'none' publish_to: 'none'
version: 0.4.0+438 version: 0.4.0+443
environment: environment:
sdk: ^3.5.4 sdk: ^3.5.4