new targets

This commit is contained in:
2025-12-23 16:30:36 +01:00
parent e111f0a99b
commit b727e65d14
32 changed files with 379 additions and 55 deletions
+31 -13
View File
@@ -1,6 +1,7 @@
import 'package:flutter/material.dart';
import 'package:shared_preferences/shared_preferences.dart';
import '../utils/translations.dart';
import '../utils/target_colors.dart';
class SettingsScreen extends StatefulWidget {
const SettingsScreen({super.key});
@@ -10,6 +11,7 @@ class SettingsScreen extends StatefulWidget {
}
class _SettingsScreenState extends State<SettingsScreen> {
Color _backgroundColor = Colors.grey[900]!;
List<String> _cameraIPs = List.generate(6, (index) => 'Not Set');
final List<String> _defaultIPs = [
@@ -57,9 +59,23 @@ class _SettingsScreenState extends State<SettingsScreen> {
'assets/targets/Target5.jpg',
'assets/targets/Target6.jpg',
'assets/targets/Target7.jpg',
'assets/targets/Target8.jpg',
'assets/targets/Target9.jpg',
'assets/targets/Target10.jpg',
'assets/targets/Target11.jpg',
'assets/targets/Target12.jpg',
'assets/targets/Target13.jpg',
'assets/targets/Target14.jpg',
'assets/targets/Target15.jpg',
'assets/targets/Target16.jpg',
'assets/targets/Target17.jpg',
'assets/targets/Target18.jpg',
'assets/targets/Target19.jpg',
'assets/targets/Target20.jpg',
'assets/targets/Target21.jpg',
'assets/targets/Target22.jpg',
'assets/targets/Target23.jpg',
'assets/targets/Target24.jpg',
];
@override
@@ -155,22 +171,27 @@ Future<void> _loadSelectedTarget() async {
setState(() {
_selectedTarget = savedTarget;
_backgroundColor = TargetColors.getBackgroundColor(savedTarget);
});
}
Future<void> _saveSelectedTarget(String target) async {
final prefs = await SharedPreferences.getInstance();
await prefs.setString('selectedTarget', target);
setState(() => _selectedTarget = target);
setState(() {
_selectedTarget = target;
_backgroundColor = TargetColors.getBackgroundColor(target);
});
}
String _getTargetDisplayName(String targetPath) {
if (targetPath == 'assets/target.png') {
return 'Default Target';
return _t('Default Target');
}
return targetPath
final targetName = targetPath
.replaceAll('assets/targets/', '')
.replaceAll('.jpg', '');
return _t(targetName);
}
Future<void> _loadCameraIPs() async {
@@ -345,7 +366,7 @@ String _getTargetDisplayName(String targetPath) {
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: _backgroundColor,
body: SingleChildScrollView(
padding: const EdgeInsets.symmetric(horizontal: 24, vertical: 16),
child: Column(
@@ -952,6 +973,12 @@ void _showTargetPopup() {
padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 14),
decoration: BoxDecoration(
color: Colors.grey[300],
borderRadius: index == 5
? const BorderRadius.only(
bottomLeft: Radius.circular(12),
bottomRight: Radius.circular(12),
)
: null,
border: index < 5
? Border(
bottom: BorderSide(
@@ -984,15 +1011,6 @@ void _showTargetPopup() {
],
),
),
if (index == 5)
Container(
decoration: BoxDecoration(
borderRadius: const BorderRadius.only(
bottomLeft: Radius.circular(12),
bottomRight: Radius.circular(12),
),
),
),
],
),
);