From 7eb4eefaaf13d1e82a83e860c8d5175a41110016 Mon Sep 17 00:00:00 2001 From: Omar Abou Selo Date: Thu, 8 Aug 2024 16:03:46 +0300 Subject: [PATCH] Fix scroll resetting on rerun or review (#203) --- .../ui/artefact_page/artefact_page_body.dart | 70 +++++++++---------- 1 file changed, 34 insertions(+), 36 deletions(-) diff --git a/frontend/lib/ui/artefact_page/artefact_page_body.dart b/frontend/lib/ui/artefact_page/artefact_page_body.dart index fbafb244..ab73eb1c 100644 --- a/frontend/lib/ui/artefact_page/artefact_page_body.dart +++ b/frontend/lib/ui/artefact_page/artefact_page_body.dart @@ -1,7 +1,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:intersperse/intersperse.dart'; -import 'package:yaru/widgets.dart'; +import 'package:yaru/yaru.dart'; import '../../models/artefact.dart'; import '../../models/test_execution.dart'; import '../../providers/filtered_test_executions.dart'; @@ -18,45 +18,43 @@ class ArtefactPageBody extends ConsumerWidget { @override Widget build(BuildContext context, WidgetRef ref) { final pageUri = AppRoutes.uriFromContext(context); - final filteredTestExecutions = - ref.watch(filteredTestExecutionsProvider(pageUri)); + final testExecutions = + ref.watch(filteredTestExecutionsProvider(pageUri)).value; - return filteredTestExecutions.when( - data: (testExecutions) => Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Row( - crossAxisAlignment: CrossAxisAlignment.baseline, - textBaseline: TextBaseline.alphabetic, - children: [ - Text( - 'Environments', - style: Theme.of(context).textTheme.headlineSmall, - ), - const SizedBox(width: Spacing.level4), - _TestExecutionsStatusSummary(testExecutions: testExecutions), - const Spacer(), - const RerunFilteredEnvironmentsButton(), - ], - ), - Expanded( - child: ListView.builder( - itemCount: testExecutions.length, - itemBuilder: (_, i) => Padding( - // Padding is to avoid scroll bar covering trailing buttons - padding: const EdgeInsets.only(right: Spacing.level3), - child: TestExecutionExpandable( - testExecution: testExecutions[i], - ), + if (testExecutions == null) { + return const YaruCircularProgressIndicator(); + } + + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + crossAxisAlignment: CrossAxisAlignment.baseline, + textBaseline: TextBaseline.alphabetic, + children: [ + Text( + 'Environments', + style: Theme.of(context).textTheme.headlineSmall, + ), + const SizedBox(width: Spacing.level4), + _TestExecutionsStatusSummary(testExecutions: testExecutions), + const Spacer(), + const RerunFilteredEnvironmentsButton(), + ], + ), + Expanded( + child: ListView.builder( + itemCount: testExecutions.length, + itemBuilder: (_, i) => Padding( + // Padding is to avoid scroll bar covering trailing buttons + padding: const EdgeInsets.only(right: Spacing.level3), + child: TestExecutionExpandable( + testExecution: testExecutions[i], ), ), ), - ], - ), - loading: () => const Center(child: YaruCircularProgressIndicator()), - error: (error, stackTrace) { - return Center(child: Text('Error: $error')); - }, + ), + ], ); } }