Beta-Version 0.4.4 (#105)

* Update README.md

* Tried new design for im- and export-button

* Moved views to presentation folder

* Moved widgets to presentation folder

* Implemented CustomRowForm Widget

* Used new custom form row

* Removed double information

* Refactored methods to private

* Changed label

* Modified paddings and text color

* Changed string

* Updated CustomFormRow padding and pressed handler

* Implemented various new forms of CustomFormRow into SettingsView

* Implemented VersionService

* Updated strings, added wiki button

* Corrected replaced string

* Added import dialog feedback (got lost in refactoring)

* Corrected function duplication

* changed suffixWidget assignment and moved stepperKeys

* Changed icons

* Added rate_my_app package

* Renamed folder

* Implement native rating dialog

* Implemented logic for pre rating and refactored rating dialog

* updated launch mode

* Small changes

* Updated launch mode

* Updated linting rules

* Renamed folders

* Changed l10n files location

* Implemented new link constants

* Changed privacy policy link

* Corrected wiki link

* Removed import

* Updated links

* Updated links to subdomains

* Updated file paths

* Updated strings

* Updated identifiers

* Added break in switch case

* Updated strings

* Implemented new popup

* Corrected links

* Changed color

* Ensured rating dialog wont show in Beta

* Refactoring

* Adding const

* Renamed variables

* Corrected links

* updated Dialog function

* Added version number in about view

* Changed order and corrected return

* Changed translation

* Changed popups because of unmounted context errors

* corrected string typo

* Replaced int constants with enums

* Renamed Stepper to CustomStepper

* Changed argument order

* Reordered properties

* Implemented empty builder for GraphView

* Added jitterStip to prevent the graphs overlaying each other

* Removed german comments

* Added comment to jitter calculation

* Overhauled comments in CustomTheme

* Updated version

* Added Delete all games button to Settings

* Updated version

* Updated en string

* Updated RoundView buttons when game is finished

* Changed lock emoji to CuperinoIcons.lock and placed it in trailing of app bar

* Simplified comparison

* Updated version

* Corrected scaling

* Updates constant names and lint rule

* HOTFIX: Graph showed wrong data

* Graph starts at round 0 now where all players have 0 points

* Adjusted jitterStep

* Removed dead code

* Updated Y-Axis and removed values under y = 0

* Changed overflow mode

* Replaced string & if statement with visibility widget

* updated accessability of graph view

* Changed string for GraphView title

* Updated comment

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Updated generated files

* Updated version in README

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
This commit is contained in:
2025-07-13 12:48:24 +02:00
committed by GitHub
parent a3003047ae
commit 8565382fab
29 changed files with 1024 additions and 545 deletions

View File

@@ -30,6 +30,16 @@
}
}
},
"pre_rating_title": "Gefällt dir die App?",
"pre_rating_message": "Feedback hilft mir, die App zu verbessern. Vielen Dank!",
"yes": "Ja",
"no": "Nein",
"bad_rating_title": "Unzufrieden mit der App?",
"bad_rating_message": "Schreib mir gerne direkt eine E-Mail, damit wir dein Problem lösen können!",
"contact_email": "E-Mail schreiben",
"email_subject": "Feedback: Cabo Counter App",
"email_body": "Ich habe folgendes Feedback...",
"overview": "Übersicht",
"new_game": "Neues Spiel",
"game_title": "Titel des Spiels",
@@ -64,7 +74,6 @@
"done": "Fertig",
"next_round": "Nächste Runde",
"statistics": "Statistiken",
"end_game": "Spiel beenden",
"delete_game": "Spiel löschen",
"new_game_same_settings": "Neues Spiel mit gleichen Einstellungen",
@@ -75,6 +84,7 @@
"end_game_message": "Möchtest du das Spiel beenden? Das Spiel wird als beendet markiert und kann nicht fortgeführt werden.",
"game_process": "Spielverlauf",
"empty_graph_text": "Du musst mindestens eine Runde spielen, damit der Graph des Spielverlaufes angezeigt werden kann.",
"settings": "Einstellungen",
"cabo_penalty": "Cabo-Strafe",
@@ -83,8 +93,12 @@
"point_limit_subtitle": "... hier ist Schluss",
"reset_to_default": "Auf Standard zurücksetzen",
"game_data": "Spieldaten",
"import_data": "Daten importieren",
"export_data": "Daten exportieren",
"import_data": "Spieldaten importieren",
"export_data": "Spieldaten exportieren",
"delete_data": "Alle Spieldaten löschen",
"delete_data_title": "Spieldaten löschen?",
"delete_data_message": "Bist du sicher, dass du alle Spieldaten löschen möchtest? Diese Aktion kann nicht rückgängig gemacht werden.",
"app": "App",
"import_success_title": "Import erfolgreich",
"import_success_message":"Die Spieldaten wurden erfolgreich importiert.",
@@ -92,16 +106,19 @@
"import_validation_error_message": "Es wurden keine Cabo-Counter Spieldaten gefunden. Bitte stellen Sie sicher, dass es sich um eine gültige Cabo-Counter Exportdatei handelt.",
"import_format_error_title": "Falsches Format",
"import_format_error_message": "Die Datei ist kein gültiges JSON-Format oder enthält ungültige Daten.",
"import_generic_error_title": "Import fehlgeschlagen",
"import_generic_error_title": "Import fehlgeschlagen",
"import_generic_error_message": "Der Import ist fehlgeschlagen.",
"export_error_title": "Fehler",
"export_error_message": "Datei konnte nicht exportiert werden",
"error_found": "Fehler gefunden?",
"create_issue": "Issue erstellen",
"wiki": "Wiki",
"app_version": "App-Version",
"build": "Build",
"load_version": "Lade Version...",
"privacy_policy": "Datenschutzerklärung",
"build": "Build-Nr.",
"loading": "Lädt...",
"about_text": "Hey :) Danke, dass du als eine:r der ersten User meiner ersten eigenen App dabei bist! Ich hab sehr viel Arbeit in dieses Projekt gesteckt und auch, wenn ich (hoffentlich) an vieles Gedacht hab, wird auf jeden Fall noch nicht alles 100% funktionieren. Solltest du also irgendwelche Fehler entdecken oder Feedback zum Design oder der Benutzerfreundlichkeit haben, teile Sie mir gern über die Testflight App oder auf den dir bekannten Wegen mit. Danke! "
}

View File

@@ -30,6 +30,16 @@
}
}
},
"pre_rating_title": "Do you like the app?",
"pre_rating_message": "Feedback helps me to continuously improve the app. Thank you!",
"yes": "Yes",
"no": "No",
"bad_rating_title": "Not satisfied?",
"bad_rating_message": "If you are not satisfied with the app, please let me know before leaving a bad rating. I will try to fix the issue as soon as possible.",
"contact_email": "Contact via E-Mail",
"email_subject": "Feedback: Cabo Counter App",
"email_body": "I have the following feedback...",
"overview": "Overview",
"new_game": "New Game",
"game_title": "Game Title",
@@ -64,13 +74,17 @@
"done": "Done",
"next_round": "Next Round",
"statistics": "Statistics",
"end_game": "End Game",
"delete_game": "Delete Game",
"new_game_same_settings": "New Game with same Settings",
"export_game": "Export Game",
"id_error_title": "ID Error",
"id_error_message": "The game has not yet been assigned an ID. If you want to delete the game, please do so via the main menu. All newly created games have an ID.",
"end_game_title": "End the game?",
"end_game_message": "Do you want to end the game? The game gets marked as finished and cannot be continued.",
"game_process": "Spielverlauf",
"game_process": "Scoring History",
"empty_graph_text": "You must play at least one round for the game progress graph to be displayed.",
"settings": "Settings",
"cabo_penalty": "Cabo Penalty",
@@ -81,10 +95,10 @@
"game_data": "Game Data",
"import_data": "Import Data",
"export_data": "Export Data",
"id_error_title": "ID Error",
"id_error_message": "The game has not yet been assigned an ID. If you want to delete the game, please do so via the main menu. All newly created games have an ID.",
"end_game_title": "End the game?",
"end_game_message": "Do you want to end the game? The game gets marked as finished and cannot be continued.",
"delete_data": "Delete all Game Data",
"delete_data_title": "Delete game data?",
"delete_data_message": "Are you sure you want to delete all game data? This action cannot be undone.",
"app": "App",
"import_success_title": "Import successful",
"import_success_message":"The game data has been successfully imported.",
@@ -97,11 +111,14 @@
"export_error_title": "Export failed",
"export_error_message": "Could not export file",
"error_found": "Found a bug?",
"create_issue": "Create Issue",
"wiki": "Wiki",
"app_version": "App Version",
"load_version": "Loading version...",
"build": "Build",
"privacy_policy": "Privacy Policy",
"loading": "Loading...",
"build": "Build No.",
"about_text": "Hey :) Thanks for being one of the first users of my app! Ive put a lot of work into this project, and even though I tried to think of everything, it might not work perfectly just yet. So if you discover any bugs or have feedback on the design or usability, please let me know via the TestFlight app or by sending me a message or email. Thank you very much!"
}

View File

@@ -18,7 +18,7 @@ import 'app_localizations_en.dart';
/// `supportedLocales` list. For example:
///
/// ```dart
/// import 'l10n/app_localizations.dart';
/// import 'generated/app_localizations.dart';
///
/// return MaterialApp(
/// localizationsDelegates: AppLocalizations.localizationsDelegates,
@@ -218,6 +218,60 @@ abstract class AppLocalizations {
/// **'Bist du sicher, dass du das Spiel \"{gameTitle}\" löschen möchtest? Diese Aktion kann nicht rückgängig gemacht werden.'**
String delete_game_message(String gameTitle);
/// No description provided for @pre_rating_title.
///
/// In de, this message translates to:
/// **'Gefällt dir die App?'**
String get pre_rating_title;
/// No description provided for @pre_rating_message.
///
/// In de, this message translates to:
/// **'Feedback hilft mir, die App zu verbessern. Vielen Dank!'**
String get pre_rating_message;
/// No description provided for @yes.
///
/// In de, this message translates to:
/// **'Ja'**
String get yes;
/// No description provided for @no.
///
/// In de, this message translates to:
/// **'Nein'**
String get no;
/// No description provided for @bad_rating_title.
///
/// In de, this message translates to:
/// **'Unzufrieden mit der App?'**
String get bad_rating_title;
/// No description provided for @bad_rating_message.
///
/// In de, this message translates to:
/// **'Schreib mir gerne direkt eine E-Mail, damit wir dein Problem lösen können!'**
String get bad_rating_message;
/// No description provided for @contact_email.
///
/// In de, this message translates to:
/// **'E-Mail schreiben'**
String get contact_email;
/// No description provided for @email_subject.
///
/// In de, this message translates to:
/// **'Feedback: Cabo Counter App'**
String get email_subject;
/// No description provided for @email_body.
///
/// In de, this message translates to:
/// **'Ich habe folgendes Feedback...'**
String get email_body;
/// No description provided for @overview.
///
/// In de, this message translates to:
@@ -362,12 +416,6 @@ abstract class AppLocalizations {
/// **'Nächste Runde'**
String get next_round;
/// No description provided for @statistics.
///
/// In de, this message translates to:
/// **'Statistiken'**
String get statistics;
/// No description provided for @end_game.
///
/// In de, this message translates to:
@@ -422,6 +470,12 @@ abstract class AppLocalizations {
/// **'Spielverlauf'**
String get game_process;
/// No description provided for @empty_graph_text.
///
/// In de, this message translates to:
/// **'Du musst mindestens eine Runde spielen, damit der Graph des Spielverlaufes angezeigt werden kann.'**
String get empty_graph_text;
/// No description provided for @settings.
///
/// In de, this message translates to:
@@ -467,15 +521,39 @@ abstract class AppLocalizations {
/// No description provided for @import_data.
///
/// In de, this message translates to:
/// **'Daten importieren'**
/// **'Spieldaten importieren'**
String get import_data;
/// No description provided for @export_data.
///
/// In de, this message translates to:
/// **'Daten exportieren'**
/// **'Spieldaten exportieren'**
String get export_data;
/// No description provided for @delete_data.
///
/// In de, this message translates to:
/// **'Alle Spieldaten löschen'**
String get delete_data;
/// No description provided for @delete_data_title.
///
/// In de, this message translates to:
/// **'Spieldaten löschen?'**
String get delete_data_title;
/// No description provided for @delete_data_message.
///
/// In de, this message translates to:
/// **'Bist du sicher, dass du alle Spieldaten löschen möchtest? Diese Aktion kann nicht rückgängig gemacht werden.'**
String get delete_data_message;
/// No description provided for @app.
///
/// In de, this message translates to:
/// **'App'**
String get app;
/// No description provided for @import_success_title.
///
/// In de, this message translates to:
@@ -548,23 +626,35 @@ abstract class AppLocalizations {
/// **'Issue erstellen'**
String get create_issue;
/// No description provided for @wiki.
///
/// In de, this message translates to:
/// **'Wiki'**
String get wiki;
/// No description provided for @app_version.
///
/// In de, this message translates to:
/// **'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.
///
/// In de, this message translates to:
/// **'Build'**
/// **'Build-Nr.'**
String get build;
/// No description provided for @load_version.
/// No description provided for @loading.
///
/// In de, this message translates to:
/// **'Lade Version...'**
String get load_version;
/// **'Lädt...'**
String get loading;
/// No description provided for @about_text.
///

View File

@@ -71,6 +71,35 @@ class AppLocalizationsDe extends AppLocalizations {
return 'Bist du sicher, dass du das Spiel \"$gameTitle\" löschen möchtest? Diese Aktion kann nicht rückgängig gemacht werden.';
}
@override
String get pre_rating_title => 'Gefällt dir die App?';
@override
String get pre_rating_message =>
'Feedback hilft mir, die App zu verbessern. Vielen Dank!';
@override
String get yes => 'Ja';
@override
String get no => 'Nein';
@override
String get bad_rating_title => 'Unzufrieden mit der App?';
@override
String get bad_rating_message =>
'Schreib mir gerne direkt eine E-Mail, damit wir dein Problem lösen können!';
@override
String get contact_email => 'E-Mail schreiben';
@override
String get email_subject => 'Feedback: Cabo Counter App';
@override
String get email_body => 'Ich habe folgendes Feedback...';
@override
String get overview => 'Übersicht';
@@ -149,9 +178,6 @@ class AppLocalizationsDe extends AppLocalizations {
@override
String get next_round => 'Nächste Runde';
@override
String get statistics => 'Statistiken';
@override
String get end_game => 'Spiel beenden';
@@ -181,6 +207,10 @@ class AppLocalizationsDe extends AppLocalizations {
@override
String get game_process => 'Spielverlauf';
@override
String get empty_graph_text =>
'Du musst mindestens eine Runde spielen, damit der Graph des Spielverlaufes angezeigt werden kann.';
@override
String get settings => 'Einstellungen';
@@ -203,10 +233,23 @@ class AppLocalizationsDe extends AppLocalizations {
String get game_data => 'Spieldaten';
@override
String get import_data => 'Daten importieren';
String get import_data => 'Spieldaten importieren';
@override
String get export_data => 'Daten exportieren';
String get export_data => 'Spieldaten exportieren';
@override
String get delete_data => 'Alle Spieldaten löschen';
@override
String get delete_data_title => 'Spieldaten löschen?';
@override
String get delete_data_message =>
'Bist du sicher, dass du alle Spieldaten löschen möchtest? Diese Aktion kann nicht rückgängig gemacht werden.';
@override
String get app => 'App';
@override
String get import_success_title => 'Import erfolgreich';
@@ -247,14 +290,20 @@ class AppLocalizationsDe extends AppLocalizations {
@override
String get create_issue => 'Issue erstellen';
@override
String get wiki => 'Wiki';
@override
String get app_version => 'App-Version';
@override
String get build => 'Build';
String get privacy_policy => 'Datenschutzerklärung';
@override
String get load_version => 'Lade Version...';
String get build => 'Build-Nr.';
@override
String get loading => 'Lädt...';
@override
String get about_text =>

View File

@@ -71,6 +71,35 @@ class AppLocalizationsEn extends AppLocalizations {
return 'Are you sure you want to delete the game \"$gameTitle\"? This action cannot be undone.';
}
@override
String get pre_rating_title => 'Do you like the app?';
@override
String get pre_rating_message =>
'Feedback helps me to continuously improve the app. Thank you!';
@override
String get yes => 'Yes';
@override
String get no => 'No';
@override
String get bad_rating_title => 'Not satisfied?';
@override
String get bad_rating_message =>
'If you are not satisfied with the app, please let me know before leaving a bad rating. I will try to fix the issue as soon as possible.';
@override
String get contact_email => 'Contact via E-Mail';
@override
String get email_subject => 'Feedback: Cabo Counter App';
@override
String get email_body => 'I have the following feedback...';
@override
String get overview => 'Overview';
@@ -146,9 +175,6 @@ class AppLocalizationsEn extends AppLocalizations {
@override
String get next_round => 'Next Round';
@override
String get statistics => 'Statistics';
@override
String get end_game => 'End Game';
@@ -176,7 +202,11 @@ class AppLocalizationsEn extends AppLocalizations {
'Do you want to end the game? The game gets marked as finished and cannot be continued.';
@override
String get game_process => 'Spielverlauf';
String get game_process => 'Scoring History';
@override
String get empty_graph_text =>
'You must play at least one round for the game progress graph to be displayed.';
@override
String get settings => 'Settings';
@@ -205,6 +235,19 @@ class AppLocalizationsEn extends AppLocalizations {
@override
String get export_data => 'Export Data';
@override
String get delete_data => 'Delete all Game Data';
@override
String get delete_data_title => 'Delete game data?';
@override
String get delete_data_message =>
'Are you sure you want to delete all game data? This action cannot be undone.';
@override
String get app => 'App';
@override
String get import_success_title => 'Import successful';
@@ -244,14 +287,20 @@ class AppLocalizationsEn extends AppLocalizations {
@override
String get create_issue => 'Create Issue';
@override
String get wiki => 'Wiki';
@override
String get app_version => 'App Version';
@override
String get build => 'Build';
String get privacy_policy => 'Privacy Policy';
@override
String get load_version => 'Loading version...';
String get build => 'Build No.';
@override
String get loading => 'Loading...';
@override
String get about_text =>