Beata Ericsson a3c2a08e4a test commit
2025-05-06 12:21:07 +02:00

101 lines
2.8 KiB
Dart

import 'package:flutter/material.dart';
import 'package:insparkspokalen_ui/models/teamModel.dart';
import 'createTeamsButton.dart';
import 'showTeams.dart';
import 'package:insparkspokalen_ui/services/teamService.dart';
import 'package:provider/provider.dart';
class TeamPage extends StatefulWidget {
const TeamPage({super.key});
@override
State<TeamPage> createState() => TeamPageState();
}
class TeamPageState extends State<TeamPage> {
late TeamService groupService;
List<TeamModel> groups = [];
final TextEditingController _controller = TextEditingController();
final TextEditingController maxMembersController = TextEditingController();
@override
void initState() {
groupService = Provider.of<TeamService>(context, listen: false); // <-- Hämtar den injicerade instansen
super.initState();
_loadGroups(); // Ladda grupper när sidan öppnas
}
Future<void> _loadGroups() async {
final result = await groupService.showTeams();
setState(() {
groups = result;
//isLoading = false;
});
}
// Öppna dialog för att skapa lag
void _openDialog() {
showDialog(
context: context,
builder: (_) => CreateTeamsButton(
controller: _controller,
onTeamCreated: (newGroup) {
setState(() {
groups.add(newGroup);
});
},
),
);
}
@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: groups.length,
itemBuilder: (context, index) {
final group = groups[index];
return TeamCard(
group: group,
onJoin: () {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text('Du gick med i ${group.name}')),
);
},
);
},
),
),
ElevatedButton(
onPressed: _openDialog,
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),
),
],
),
);
}
}