Compare commits
8 Commits
feature/12
...
d680ce596f
| Author | SHA1 | Date | |
|---|---|---|---|
| d680ce596f | |||
| fc062b2135 | |||
| 20537c88c1 | |||
| 42b15cef87 | |||
| cd0024d791 | |||
| 9544bf36d5 | |||
| 0c760e95ee | |||
| 7561ea73ed |
@@ -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>
|
||||
|
||||
@@ -45,5 +45,10 @@
|
||||
<true/>
|
||||
<key>UIApplicationSupportsIndirectInputEvents</key>
|
||||
<true/>
|
||||
<key>LSApplicationQueriesSchemes</key>
|
||||
<array>
|
||||
<string>https</string>
|
||||
<string>mailto</string>
|
||||
</array>
|
||||
</dict>
|
||||
</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: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"))
|
||||
]
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user