From 0a15d7122e584337e7af2948bab9db06385b33ba Mon Sep 17 00:00:00 2001 From: tikaiz Date: Wed, 4 Mar 2026 10:09:09 +0100 Subject: [PATCH] Added Http request for available Tournaments --- .../android/app/src/main/AndroidManifest.xml | 2 + .../lib/models/tournament.dart | 25 +++++++++++ .../lib/state_provider.dart | 22 +++++++++ .../widgets/available_tournament_list.dart | 45 ++++++++++++++----- 4 files changed, 82 insertions(+), 12 deletions(-) create mode 100644 frontend_splatournament_manager/lib/models/tournament.dart diff --git a/frontend_splatournament_manager/android/app/src/main/AndroidManifest.xml b/frontend_splatournament_manager/android/app/src/main/AndroidManifest.xml index 6cd15bc..be6c6a2 100644 --- a/frontend_splatournament_manager/android/app/src/main/AndroidManifest.xml +++ b/frontend_splatournament_manager/android/app/src/main/AndroidManifest.xml @@ -1,4 +1,6 @@ + + ? _availableTournaments; + Future> fetchAvailableTournaments() async { + try { + var response = await http.get(Uri.parse('http://10.0.2.2:3000/availableTournaments')); + if (response.statusCode == 200) { + final List list = json.decode(response.body); + + _availableTournaments = list.map((json) => Tournament.fromJson(json)).toList(); + return _availableTournaments!; + } + } catch (e) { + print(e); + _availableTournaments = null; + return Future.error(e); + } + return[]; + } + List get user => _availableTournaments ?? []; } \ No newline at end of file diff --git a/frontend_splatournament_manager/lib/widgets/available_tournament_list.dart b/frontend_splatournament_manager/lib/widgets/available_tournament_list.dart index a17015d..0e502e6 100644 --- a/frontend_splatournament_manager/lib/widgets/available_tournament_list.dart +++ b/frontend_splatournament_manager/lib/widgets/available_tournament_list.dart @@ -1,5 +1,7 @@ import 'package:flutter/material.dart'; import 'package:frontend_splatournament_manager/pages/tournament_detail_page.dart'; +import 'package:frontend_splatournament_manager/state_provider.dart'; +import 'package:provider/provider.dart'; class AvailableTournamentList extends StatelessWidget { const AvailableTournamentList({super.key}); @@ -7,18 +9,37 @@ class AvailableTournamentList extends StatelessWidget { @override Widget build(BuildContext context) { return Expanded( - child: ListView.builder( - itemCount: 5, - itemBuilder: (context, index) { - return ListTile( - leading: Icon(Icons.abc), - title: Text("TITLE"), - subtitle: Text("Description"), - onTap: () { - Navigator.push(context, MaterialPageRoute(builder: (context) => TournamentDetailPage(),)); - }, - ); - }, + child: Consumer( + builder: (BuildContext context, StateProvider value, Widget? child) => + FutureBuilder( + future: value.fetchAvailableTournaments(), + builder: (context, snapshot) { + if(snapshot.hasError){ + return Center(child: Text('Error: ${snapshot.error}')); + }else if(!snapshot.hasData){ + return Center(child: CircularProgressIndicator()); + } + var list = snapshot.data!; + return ListView.builder( + itemCount: list.length, + itemBuilder: (context, index) { + return ListTile( + leading: Icon(Icons.abc), + title: Text(list[index].name), + subtitle: Text(list[index].description), + onTap: () { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => TournamentDetailPage(), + ), + ); + }, + ); + }, + ); + }, + ), ), ); }