2023-10-19 21:45:07 +00:00
|
|
|
import 'dart:io';
|
|
|
|
import 'package:flutter/foundation.dart';
|
|
|
|
import 'package:flutter/material.dart';
|
|
|
|
import 'package:shared_preferences/shared_preferences.dart';
|
|
|
|
import 'package:tetra_stats/gen/strings.g.dart';
|
|
|
|
import 'package:window_manager/window_manager.dart';
|
|
|
|
|
|
|
|
late String oldWindowTitle;
|
2023-10-25 23:00:47 +00:00
|
|
|
Color pickerColor = Colors.cyanAccent;
|
|
|
|
Color currentColor = Colors.cyanAccent;
|
2023-10-19 21:45:07 +00:00
|
|
|
|
|
|
|
class CustomizationView extends StatefulWidget {
|
2024-01-13 18:49:36 +00:00
|
|
|
const CustomizationView({super.key});
|
2023-10-19 21:45:07 +00:00
|
|
|
|
|
|
|
@override
|
|
|
|
State<StatefulWidget> createState() => CustomizationState();
|
|
|
|
}
|
|
|
|
|
|
|
|
class CustomizationState extends State<CustomizationView> {
|
|
|
|
late SharedPreferences prefs;
|
2024-03-20 22:56:13 +00:00
|
|
|
late bool oskKagariGimmick;
|
2023-10-19 21:45:07 +00:00
|
|
|
|
2023-10-25 23:00:47 +00:00
|
|
|
void changeColor(Color color) {
|
|
|
|
setState(() => pickerColor = color);
|
|
|
|
}
|
|
|
|
|
2023-10-19 21:45:07 +00:00
|
|
|
@override
|
|
|
|
void initState() {
|
2023-10-25 23:00:47 +00:00
|
|
|
if (!kIsWeb && !Platform.isAndroid && !Platform.isIOS) {
|
2023-10-19 21:45:07 +00:00
|
|
|
windowManager.getTitle().then((value) => oldWindowTitle = value);
|
|
|
|
windowManager.setTitle("Tetra Stats: ${t.settings}");
|
|
|
|
}
|
2024-03-20 22:56:13 +00:00
|
|
|
_getPreferences().then((value) => setState((){}));
|
2023-10-19 21:45:07 +00:00
|
|
|
super.initState();
|
|
|
|
}
|
|
|
|
|
|
|
|
@override
|
2023-10-25 23:00:47 +00:00
|
|
|
void dispose() {
|
2023-10-19 21:45:07 +00:00
|
|
|
if (!kIsWeb && !Platform.isAndroid && !Platform.isIOS) windowManager.setTitle(oldWindowTitle);
|
|
|
|
super.dispose();
|
|
|
|
}
|
|
|
|
|
|
|
|
Future<void> _getPreferences() async {
|
|
|
|
prefs = await SharedPreferences.getInstance();
|
2024-03-20 22:56:13 +00:00
|
|
|
if (prefs.getBool("oskKagariGimmick") != null) {
|
|
|
|
oskKagariGimmick = prefs.getBool("oskKagariGimmick")!;
|
|
|
|
} else {
|
|
|
|
oskKagariGimmick = true;
|
|
|
|
}
|
2023-10-19 21:45:07 +00:00
|
|
|
}
|
|
|
|
|
2023-10-25 23:00:47 +00:00
|
|
|
ThemeData getTheme(BuildContext context, Color color){
|
2023-10-28 22:05:56 +00:00
|
|
|
return Theme.of(context).copyWith(colorScheme: ColorScheme.dark(primary: color, secondary: Colors.white));
|
2023-10-25 23:00:47 +00:00
|
|
|
}
|
|
|
|
|
2023-10-19 21:45:07 +00:00
|
|
|
@override
|
|
|
|
Widget build(BuildContext context) {
|
|
|
|
final t = Translations.of(context);
|
2023-10-25 23:00:47 +00:00
|
|
|
List<DropdownMenuItem<AppLocale>>? locales =
|
|
|
|
<DropdownMenuItem<AppLocale>>[];
|
|
|
|
for (var v in AppLocale.values) {
|
2023-10-19 21:45:07 +00:00
|
|
|
locales.add(DropdownMenuItem<AppLocale>(
|
2023-10-25 23:00:47 +00:00
|
|
|
value: v, child: Text(t.locales[v.languageTag]!)));
|
2023-10-19 21:45:07 +00:00
|
|
|
}
|
|
|
|
return Scaffold(
|
|
|
|
appBar: AppBar(
|
|
|
|
title: Text(t.settings),
|
|
|
|
),
|
|
|
|
backgroundColor: Colors.black,
|
2023-10-28 22:05:56 +00:00
|
|
|
body: SafeArea(
|
|
|
|
child: ListView(
|
|
|
|
children: [
|
2024-03-20 22:56:13 +00:00
|
|
|
// ListTile(
|
|
|
|
// title: const Text("Accent color"),
|
|
|
|
// trailing: ColorIndicator(HSVColor.fromColor(Theme.of(context).colorScheme.primary)),
|
|
|
|
// onTap: () {
|
|
|
|
// showDialog(
|
|
|
|
// context: context,
|
|
|
|
// builder: (BuildContext context) => AlertDialog(
|
|
|
|
// title: const Text('Pick an accent color'),
|
|
|
|
// content: SingleChildScrollView(
|
|
|
|
// child: ColorPicker(
|
|
|
|
// pickerColor: pickerColor,
|
|
|
|
// onColorChanged: changeColor,
|
|
|
|
// ),
|
|
|
|
// ),
|
|
|
|
// actions: <Widget>[
|
|
|
|
// ElevatedButton(
|
|
|
|
// child: const Text('Set'),
|
|
|
|
// onPressed: () {
|
|
|
|
// setState(() {
|
|
|
|
// setAccentColor(pickerColor);
|
|
|
|
// });
|
|
|
|
// Navigator.of(context).pop();
|
|
|
|
// },
|
|
|
|
// ),
|
|
|
|
// ]));
|
|
|
|
// }),
|
|
|
|
// const ListTile(
|
|
|
|
// title: Text("Font"),
|
|
|
|
// subtitle: Text("Not implemented"),
|
|
|
|
// ),
|
|
|
|
// const ListTile(
|
|
|
|
// title: Text("Stats Table in TL mathes list"),
|
|
|
|
// subtitle: Text("Not implemented"),
|
|
|
|
// ),
|
|
|
|
ListTile(title: Text(t.oskKagari),
|
|
|
|
subtitle: Text(t.oskKagariDescription),
|
|
|
|
trailing: Switch(value: oskKagariGimmick, onChanged: (bool value){
|
|
|
|
prefs.setBool("oskKagariGimmick", value);
|
|
|
|
setState(() {
|
|
|
|
oskKagariGimmick = value;
|
|
|
|
});
|
|
|
|
}),)
|
2023-10-28 22:05:56 +00:00
|
|
|
],
|
|
|
|
)),
|
2023-10-19 21:45:07 +00:00
|
|
|
);
|
|
|
|
}
|
|
|
|
}
|