import 'package:flutter/material.dart'; //import 'package:game_tracker/data/dto/group.dart'; //import 'package:game_tracker/data/dto/player.dart'; import 'package:game_tracker/presentation/widgets/full_width_button.dart'; import 'package:game_tracker/presentation/widgets/group_tile.dart'; import 'package:game_tracker/presentation/widgets/top_centered_message.dart'; class Group { final String id; final String name; final List members; Group({required this.id, required this.name, required this.members}); } class Player { final String id; final String name; Player({required this.id, required this.name}); } class GroupsView extends StatefulWidget { const GroupsView({super.key}); @override State createState() => _GroupsViewState(); } class _GroupsViewState extends State { Future> _getMockGroups() async { await Future.delayed(const Duration(seconds: 1)); final player1 = Player(id: 'p1', name: 'Felix'); final player2 = Player(id: 'p2', name: 'Yannick'); final player3 = Player(id: 'p3', name: 'Mathis'); final player4 = Player(id: 'p4', name: 'Petrus'); return [ Group( id: 'g1', name: 'Weekend Warriors', members: [ player1, player2, player4, player3, player1, player4, player2, ], ), Group(id: 'g2', name: 'Strategy Masters', members: [player3, player4]), Group( id: 'g3', name: 'The Cardboard Crew', members: [player1, player2, player3, player4], ), Group( id: 'g4', name: 'Gamers', members: [player1, player3, player1, player4], ), Group( id: 'g4', name: 'The Group', members: [player4, player1, player3, player4, player3], ), Group( id: 'g4', name: 'Friends', members: [player4, player1, player3, player4], ), Group( id: 'g4', name: 'Sample Group', members: [player1, player1, player4, player3], ), Group( id: 'g4', name: 'The Group', members: [player1, player1, player3, player4], ), Group( id: 'g4', name: 'The Best', members: [player1, player3, player1, player4, player1], ), ]; } @override Widget build(BuildContext context) { return SafeArea( child: Stack( children: [ FutureBuilder( future: _getMockGroups(), builder: (BuildContext context, AsyncSnapshot> snapshot) { if (snapshot.connectionState == ConnectionState.waiting) { return const Center( child: TopCenteredMessage( message: 'Data not yet available, show sceleton', ), ); } else if (snapshot.hasError) { return const Center( child: TopCenteredMessage( message: 'Error while loading group data.', ), ); } else if (!snapshot.hasData || snapshot.data!.isEmpty) { return const Center( child: TopCenteredMessage( message: 'No groups created yet.', ), ); } //return Center(child: Text('whatever')); //return GroupTile(group: snapshot.data![0]); return ListView.builder( padding: const EdgeInsets.only(bottom: 85), itemCount: snapshot.data!.length, itemBuilder: (BuildContext context, int index) { return GroupTile(group: snapshot.data![index]); }, ); }, ), Positioned( bottom: 16, right: 16, child: FullWidthButton(text: 'Create Group', onPressed: () {}), ), ], ), ); } }