From 1d92084da6a5499e8dfc55b69ff8401e8bdf53d9 Mon Sep 17 00:00:00 2001 From: mathiskirchner Date: Wed, 24 Dec 2025 12:53:37 +0100 Subject: [PATCH] fix rangeerror when only 1 or less matches exist --- .../views/main_menu/home_view.dart | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/lib/presentation/views/main_menu/home_view.dart b/lib/presentation/views/main_menu/home_view.dart index 31bedf5..bb2acf6 100644 --- a/lib/presentation/views/main_menu/home_view.dart +++ b/lib/presentation/views/main_menu/home_view.dart @@ -22,6 +22,7 @@ class _HomeViewState extends State { bool isLoading = true; int matchCount = 0; int groupCount = 0; + List loadedRecentMatches = []; List recentMatches = List.filled( 2, Match( @@ -41,7 +42,6 @@ class _HomeViewState extends State { void initState() { super.initState(); final db = Provider.of(context, listen: false); - Future.wait([ db.matchDao.getMatchCount(), db.groupDao.getGroupCount(), @@ -50,12 +50,17 @@ class _HomeViewState extends State { ]).then((results) { matchCount = results[0] as int; groupCount = results[1] as int; - recentMatches = results[2] as List; - + loadedRecentMatches = results[2] as List; recentMatches = - (recentMatches..sort((a, b) => b.createdAt.compareTo(a.createdAt))) + (loadedRecentMatches + ..sort((a, b) => b.createdAt.compareTo(a.createdAt))) .take(2) .toList(); + if (loadedRecentMatches.length < 2) { + recentMatches.add( + Match(name: "Dummy Match", winner: null, group: null, players: null), + ); + } if (mounted) { setState(() { isLoading = false; @@ -69,6 +74,7 @@ class _HomeViewState extends State { return LayoutBuilder( builder: (BuildContext context, BoxConstraints constraints) { return AppSkeleton( + fixLayoutBuilder: true, enabled: isLoading, child: SingleChildScrollView( child: Column( @@ -103,7 +109,7 @@ class _HomeViewState extends State { content: Padding( padding: const EdgeInsets.symmetric(horizontal: 40.0), child: Visibility( - visible: !isLoading, + visible: !isLoading && loadedRecentMatches.isNotEmpty, replacement: const Center( heightFactor: 12, child: Text('No recent games available.'), @@ -125,7 +131,7 @@ class _HomeViewState extends State { padding: EdgeInsets.symmetric(vertical: 8.0), child: Divider(), ), - if (recentMatches.length > 1) ...[ + if (loadedRecentMatches.length > 1) ...[ MatchTile( matchTitle: recentMatches[1].name, game: 'Winner',