Compare commits
8 Commits
enhancemen
...
d680ce596f
| Author | SHA1 | Date | |
|---|---|---|---|
| d680ce596f | |||
| fc062b2135 | |||
| 20537c88c1 | |||
| 42b15cef87 | |||
| cd0024d791 | |||
| 9544bf36d5 | |||
| 0c760e95ee | |||
| 7561ea73ed |
@@ -41,5 +41,13 @@
|
|||||||
<action android:name="android.intent.action.PROCESS_TEXT"/>
|
<action android:name="android.intent.action.PROCESS_TEXT"/>
|
||||||
<data android:mimeType="text/plain"/>
|
<data android:mimeType="text/plain"/>
|
||||||
</intent>
|
</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>
|
</queries>
|
||||||
</manifest>
|
</manifest>
|
||||||
|
|||||||
@@ -45,5 +45,10 @@
|
|||||||
<true/>
|
<true/>
|
||||||
<key>UIApplicationSupportsIndirectInputEvents</key>
|
<key>UIApplicationSupportsIndirectInputEvents</key>
|
||||||
<true/>
|
<true/>
|
||||||
|
<key>LSApplicationQueriesSchemes</key>
|
||||||
|
<array>
|
||||||
|
<string>https</string>
|
||||||
|
<string>mailto</string>
|
||||||
|
</array>
|
||||||
</dict>
|
</dict>
|
||||||
</plist>
|
</plist>
|
||||||
|
|||||||
@@ -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;
|
||||||
|
});},
|
||||||
|
),
|
||||||
|
)
|
||||||
|
],
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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;
|
||||||
|
});},
|
||||||
|
),
|
||||||
|
)
|
||||||
|
],
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,4 +1,9 @@
|
|||||||
import 'package:flutter/material.dart';
|
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 {
|
class SettingsView extends StatelessWidget {
|
||||||
const SettingsView({super.key});
|
const SettingsView({super.key});
|
||||||
@@ -6,8 +11,90 @@ class SettingsView extends StatelessWidget {
|
|||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return Scaffold(
|
return Scaffold(
|
||||||
appBar: AppBar(title: const Text('Einstellungen')),
|
backgroundColor: CustomTheme.backgroundColor,
|
||||||
body: const Center(child: Text('Settings View')),
|
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"))
|
||||||
|
]
|
||||||
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ dependencies:
|
|||||||
drift_flutter: ^0.2.4
|
drift_flutter: ^0.2.4
|
||||||
path_provider: ^2.1.5
|
path_provider: ^2.1.5
|
||||||
provider: ^6.1.5
|
provider: ^6.1.5
|
||||||
|
url_launcher: ^6.3.1
|
||||||
|
|
||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
flutter_test:
|
flutter_test:
|
||||||
|
|||||||
Reference in New Issue
Block a user