2025-05-15 20:34:50 +02:00

106 lines
3.1 KiB
Dart

import 'package:flutter/material.dart';
import 'package:insparkspokalen_ui/models/teamModel.dart';
import 'package:insparkspokalen_ui/services/userService.dart';
import 'createTeamsButton.dart';
import 'showTeams.dart';
import 'package:insparkspokalen_ui/services/teamService.dart';
import 'package:provider/provider.dart';
import 'package:insparkspokalen_ui/services/googleAuthService.dart';
class TeamPage extends StatefulWidget {
const TeamPage({super.key});
@override
State<TeamPage> createState() => TeamPageState();
}
class TeamPageState extends State<TeamPage> {
late TeamService teamService;
List<TeamModel> teams = [];
final TextEditingController _controller = TextEditingController();
final TextEditingController maxMembersController = TextEditingController();
@override
void initState() {
teamService = Provider.of<TeamService>(context, listen: false); // <-- Hämtar den injicerade instansen
super.initState();
_loadTeams(); // Ladda grupper när sidan öppnas
}
Future<void> _loadTeams() async {
final result = await teamService.showTeams();
setState(() {
teams = result;
//isLoading = false;
});
}
// Öppna dialog för att skapa lag
void _openDialog() {
showDialog(
context: context,
builder: (_) => CreateTeamsButton(
controller: _controller,
onTeamCreated: (newGroup) async {
await _loadTeams(); // re-fetch full list from server
},
),
);
}
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: const Color(0xFF2E2E2E),
body: Column(
children: [
const SizedBox(height: 32),
const Text(
'Tillgängliga lag',
style: TextStyle(color: Colors.amber, fontSize: 26),
),
Expanded(
child: ListView.builder(
itemCount: teams.length,
itemBuilder: (context, index) {
final team = teams[index];
return TeamCard(
team: team,
onJoin: () {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text('Du gick med i ${team.name}')),
);
}, teamService: TeamService(), userService: UserService(),
);
},
),
),
ElevatedButton(
onPressed: () async {
final isAuthenticated = await GoogleAuthService.ensureLoggedIn(context);
if (!isAuthenticated) return;
_openDialog(); // or your next step
},
style: ElevatedButton.styleFrom(
backgroundColor: Colors.grey,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(40),
),
),
child: const Text(
'Skapa nytt lag',
style: TextStyle(color: Colors.white),
),
),
const SizedBox(height: 16),
const Text(
'Studentkåren DISK',
style: TextStyle(color: Colors.white70),
),
],
),
);
}
}