New Categories added
parent
9a8561e45e
commit
1c0734b6e7
|
|
@ -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),
|
||||
];
|
||||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
};
|
||||
|
|
@ -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),
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
Loading…
Reference in New Issue