8 Commits

6 changed files with 265 additions and 2 deletions

View File

@@ -41,5 +41,13 @@
<action android:name="android.intent.action.PROCESS_TEXT"/>
<data android:mimeType="text/plain"/>
</intent>
<intent>
<action android:name="android.intent.action.VIEW" />
<data android:scheme="https" />
</intent>
<intent>
<action android:name="android.intent.action.VIEW" />
<data android:scheme="mailto" />
</intent>
</queries>
</manifest>

View File

@@ -45,5 +45,10 @@
<true/>
<key>UIApplicationSupportsIndirectInputEvents</key>
<true/>
<key>LSApplicationQueriesSchemes</key>
<array>
<string>https</string>
<string>mailto</string>
</array>
</dict>
</plist>

View File

@@ -0,0 +1,81 @@
import 'package:flutter/material.dart';
import 'package:game_tracker/core/custom_theme.dart';
class LanguageView extends StatefulWidget {
const LanguageView({super.key});
@override
State<LanguageView> createState() => _LanguageViewState();
}
enum languageOptions {
systemDefault('Systemstandard'),
german('Deutsch'),
english('English');
final String label;
const languageOptions(this.label);
}
class _LanguageViewState extends State<LanguageView> {
languageOptions? _selectedLanguage = languageOptions.systemDefault;
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text('Sprache'), titleTextStyle: TextStyle(fontWeight: FontWeight.bold, fontSize: 20), centerTitle: true, backgroundColor: CustomTheme.backgroundColor),
backgroundColor: CustomTheme.backgroundColor,
body: Column(
children: [
ListTile(
title: Text(languageOptions.systemDefault.label),
onTap: () {
setState(() {
_selectedLanguage = languageOptions.systemDefault;
});
},
leading: Radio(
value: languageOptions.systemDefault,
groupValue: _selectedLanguage,
onChanged: (value) {
setState(() {
_selectedLanguage = languageOptions.systemDefault;
});
},
),
),
ListTile(
title: Text(languageOptions.german.label),
onTap: () {
setState(() {
_selectedLanguage = languageOptions.german;
});
},
leading: Radio(
value: languageOptions.german,
groupValue: _selectedLanguage,
onChanged: (value) {setState(() {
_selectedLanguage = languageOptions.german;
});},
),
),
ListTile(
title: Text(languageOptions.english.label),
onTap: () {
setState(() {
_selectedLanguage = languageOptions.english;
});
},
leading: Radio(
value: languageOptions.english,
groupValue: _selectedLanguage,
onChanged: (value) {setState(() {
_selectedLanguage = languageOptions.english;
});},
),
)
],
),
);
}
}

View File

@@ -0,0 +1,81 @@
import 'package:flutter/material.dart';
import 'package:game_tracker/core/custom_theme.dart';
class ThemeView extends StatefulWidget {
const ThemeView({super.key});
@override
State<ThemeView> createState() => _ThemeViewState();
}
enum themeOptions {
systemDefault('Systemstandard'),
dark('Dunkel'),
light('Hell');
final String label;
const themeOptions(this.label);
}
class _ThemeViewState extends State<ThemeView> {
themeOptions? _selectedTheme = themeOptions.systemDefault;
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text('Design'), titleTextStyle: TextStyle(fontWeight: FontWeight.bold, fontSize: 20), centerTitle: true, backgroundColor: CustomTheme.backgroundColor),
backgroundColor: CustomTheme.backgroundColor,
body: Column(
children: [
ListTile(
title: Text(themeOptions.systemDefault.label),
onTap: () {
setState(() {
_selectedTheme = themeOptions.systemDefault;
});
},
leading: Radio(
value: themeOptions.systemDefault,
groupValue: _selectedTheme,
onChanged: (value) {
setState(() {
_selectedTheme = themeOptions.systemDefault;
});
},
),
),
ListTile(
title: Text(themeOptions.dark.label),
onTap: () {
setState(() {
_selectedTheme = themeOptions.dark;
});
},
leading: Radio(
value: themeOptions.dark,
groupValue: _selectedTheme,
onChanged: (value) {setState(() {
_selectedTheme = themeOptions.dark;
});},
),
),
ListTile(
title: Text(themeOptions.light.label),
onTap: () {
setState(() {
_selectedTheme = themeOptions.light;
});
},
leading: Radio(
value: themeOptions.light,
groupValue: _selectedTheme,
onChanged: (value) {setState(() {
_selectedTheme = themeOptions.light;
});},
),
)
],
),
);
}
}

View File

@@ -1,4 +1,9 @@
import 'package:flutter/material.dart';
import "package:game_tracker/core/custom_theme.dart";
import 'package:flutter/services.dart';
import 'package:url_launcher/url_launcher.dart';
import 'package:game_tracker/presentation/views/main_menu/settings_subpages/theme_view.dart';
import 'package:game_tracker/presentation/views/main_menu/settings_subpages/language_view.dart';
class SettingsView extends StatelessWidget {
const SettingsView({super.key});
@@ -6,8 +11,90 @@ class SettingsView extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text('Einstellungen')),
body: const Center(child: Text('Settings View')),
backgroundColor: CustomTheme.backgroundColor,
appBar: AppBar(title: const Text('Einstellungen'), titleTextStyle: TextStyle(fontWeight: FontWeight.bold, fontSize: 20), centerTitle: true, backgroundColor: CustomTheme.backgroundColor),
body: Column(
children: [
ListTile(
title: Text("Design"),
subtitle: Text("Dunkel"),
leading: Icon(Icons.design_services),
trailing: Icon(Icons.arrow_forward_ios),
onTap: () {
Navigator.push(context, MaterialPageRoute(builder: (context) => const ThemeView()));
}
),
ListTile(
title: Text("Sprache"),
subtitle: Text("Deutsch"),
leading: Icon(Icons.language),
trailing: Icon(Icons.arrow_forward_ios),
onTap: () {
Navigator.push(context, MaterialPageRoute(builder: (context) => const LanguageView()));
}
),
ListTile(
title: Text("App Version"),
leading: Icon(Icons.info),
trailing: Icon(Icons.copy),
subtitle: Text("1.0.0"),
onTap: () async {
await Clipboard.setData(ClipboardData(text: "1.0.0"));
}
),
ListTile(
title: Text("Fehler melden"),
leading: Icon(Icons.error),
trailing: Icon(Icons.arrow_forward_ios),
onTap: () async {
await launchUrl(
Uri.parse("https://github.com/LiquidDevelopmentDE/game-tracker/issues/new?type=bug",),
);
}
),
ListTile(
title: Text("Kontakt"),
leading: Icon(Icons.email),
trailing: Icon(Icons.arrow_forward_ios),
onTap: () async {
await launchUrl(
Uri.parse("mailto:hi@liquid-development.de?subject=Kontakt via Game Tracker App V1.0.0",),
);
}
),
ListTile(
title: Text("Alle Daten löschen"),
leading: Icon(Icons.delete_forever),
trailing: Icon(Icons.arrow_forward_ios),
onTap: () {
showDialog(
context: context,
builder: (context) => AlertDialog(
title: Text("Daten löschen"),
content: Text("Möchten Sie wirklich alle Daten löschen?"),
actions: [
TextButton(
onPressed: () {
// delete data
Navigator.of(context).pop();
},
child: Text("Ja"),
),
TextButton(
onPressed: () {
Navigator.of(context).pop();
},
child: Text("Nein"),
),
],
),
);
},
),
Spacer(flex: 7),
Expanded(child: Text("Programmiert mit \u{1F499} von LIQUID Development"))
]
),
);
}
}

View File

@@ -18,6 +18,7 @@ dependencies:
drift_flutter: ^0.2.4
path_provider: ^2.1.5
provider: ^6.1.5
url_launcher: ^6.3.1
dev_dependencies:
flutter_test: