New Categories added

main
joschy2002 2025-06-25 18:41:15 +02:00
parent 9a8561e45e
commit 1c0734b6e7
5 changed files with 34 additions and 36 deletions

View File

@ -0,0 +1,20 @@
// categories.dart
// Central list of all training categories with their names and icons.
import 'package:flutter/material.dart';
class TrainingCategory {
final String name;
final IconData icon;
const TrainingCategory({required this.name, required this.icon});
}
const List<TrainingCategory> kTrainingCategories = [
TrainingCategory(name: 'Aufwärmen & Mobilisation', icon: Icons.directions_run),
TrainingCategory(name: 'Wurf- & Torabschluss', icon: Icons.sports_handball),
TrainingCategory(name: 'Torwarttraining', icon: Icons.sports_soccer),
TrainingCategory(name: 'Athletik', icon: Icons.fitness_center),
TrainingCategory(name: 'Pass', icon: Icons.sports_volleyball),
TrainingCategory(name: 'Koordination', icon: Icons.directions_walk),
TrainingCategory(name: 'Spielformen', icon: Icons.sports),
TrainingCategory(name: 'kleine Spiele', icon: Icons.sports_basketball),
];

View File

@ -5,6 +5,7 @@ import 'package:flutter/material.dart';
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'training_detail_screen.dart';
import '../models/categories.dart';
/// The FavoritesTab displays the user's favorite exercises and allows filtering by category.
class FavoritesTab extends StatefulWidget {
@ -17,14 +18,7 @@ class FavoritesTab extends StatefulWidget {
/// State for the FavoritesTab, manages category selection and favorite loading.
class _FavoritesTabState extends State<FavoritesTab> {
static const List<String> _categories = [
'Aufwärmen & Mobilisation',
'Wurf- & Torabschluss',
'Torwarttraining',
'Athletik',
'Pass',
'Koordination',
];
List<String> get _categories => kTrainingCategories.map((c) => c.name).toList();
String? _selectedCategory;
@override

View File

@ -10,6 +10,7 @@ import 'favorites_tab.dart';
import 'calendar_tab.dart';
import 'profile_tab.dart';
import 'training_detail_screen.dart';
import '../models/categories.dart';
/// The main home screen of the app, containing the bottom navigation bar and all main tabs.
class HomeScreen extends StatefulWidget {
@ -391,14 +392,11 @@ class _HomeScreenState extends State<HomeScreen> {
scrollDirection: Axis.horizontal,
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
_buildFavoriteCircle('Aufwärmen & Mobilisation', Icons.directions_run, categoryColors['Aufwärmen & Mobilisation']!),
_buildFavoriteCircle('Wurf- & Torabschluss', Icons.sports_handball, categoryColors['Wurf- & Torabschluss']!),
_buildFavoriteCircle('Torwarttraining', Icons.sports, categoryColors['Torwarttraining']!),
_buildFavoriteCircle('Athletik', Icons.fitness_center, categoryColors['Athletik']!),
_buildFavoriteCircle('Pass', Icons.compare_arrows, categoryColors['Pass']!),
_buildFavoriteCircle('Koordination', Icons.directions_walk, categoryColors['Koordination']!),
],
children: kTrainingCategories.map((cat) => _buildFavoriteCircle(
cat.name,
cat.icon,
categoryColors[cat.name] ?? Colors.grey,
)).toList(),
),
),
),
@ -583,4 +581,6 @@ const Map<String, Color> categoryColors = {
'Athletik': Colors.blue,
'Pass': Colors.purple,
'Koordination': Colors.teal,
'Spielformen': Colors.indigo,
'kleine Spiele': Colors.brown,
};

View File

@ -4,6 +4,7 @@
import 'package:flutter/material.dart';
import '../widgets/category_circle.dart';
import '../widgets/exercise_card.dart';
import '../models/categories.dart';
/// The HomeTab displays a welcome message, featured image, favorite categories, and exercise suggestions.
class HomeTab extends StatelessWidget {
@ -66,18 +67,7 @@ class HomeTab extends StatelessWidget {
height: 100,
child: ListView(
scrollDirection: Axis.horizontal,
children: const [
CategoryCircle(
title: 'Kondition',
icon: Icons.directions_run,
),
CategoryCircle(title: 'Wurf', icon: Icons.sports_handball),
CategoryCircle(
title: 'Passen',
icon: Icons.sports_volleyball,
),
CategoryCircle(title: 'Torhüter', icon: Icons.sports_soccer),
],
children: kTrainingCategories.map((cat) => CategoryCircle(title: cat.name, icon: cat.icon)).toList(),
),
),
const SizedBox(height: 20),

View File

@ -5,6 +5,7 @@ import 'package:firebase_storage/firebase_storage.dart';
import 'package:image_picker/image_picker.dart';
import 'dart:io';
import 'training_detail_screen.dart';
import '../models/categories.dart';
/// The SearchTab displays a searchable and filterable list of training exercises.
class SearchTab extends StatefulWidget {
@ -27,14 +28,7 @@ class _SearchTabState extends State<SearchTab> {
// Controller for the search input field.
final TextEditingController _searchController = TextEditingController();
// List of available exercise categories.
final List<String> _categories = [
'Aufwärmen & Mobilisation',
'Wurf- & Torabschluss',
'Torwarttraining',
'Athletik',
'Pass',
'Koordination',
];
List<String> get _categories => kTrainingCategories.map((c) => c.name).toList();
// Currently selected category for filtering.
String? _selectedCategory;
// Current search term entered by the user.