@@ -18,57 +18,79 @@ import 'package:flutter/material.dart';
1818import '../../models/execution_metadata.dart' ;
1919import 'spacing.dart' ;
2020
21- class ExecutionMetadataTable extends StatelessWidget {
21+ class ExecutionMetadataTable extends StatefulWidget {
2222 final ExecutionMetadata metadata;
2323 const ExecutionMetadataTable ({super .key, required this .metadata});
2424
25+ @override
26+ State <ExecutionMetadataTable > createState () => _ExecutionMetadataTableState ();
27+ }
28+
29+ class _ExecutionMetadataTableState extends State <ExecutionMetadataTable > {
30+ final ScrollController _scrollController = ScrollController ();
31+
32+ @override
33+ void dispose () {
34+ _scrollController.dispose ();
35+ super .dispose ();
36+ }
37+
2538 @override
2639 Widget build (BuildContext context) {
27- final sortedEntries = metadata.data.entries.toList ()
40+ final sortedEntries = widget. metadata.data.entries.toList ()
2841 ..sort ((a, b) => a.key.compareTo (b.key));
2942 if (sortedEntries.isEmpty) {
3043 return const Text ('No execution metadata available.' );
3144 }
32- return DataTable (
33- dataRowMaxHeight: double .infinity,
34- columns: const [
35- DataColumn (
36- label: Text ('Category' ),
37- ),
38- DataColumn (
39- label: Text ('Values' ),
40- ),
41- ],
42- rows: sortedEntries
43- .map (
44- (entry) => DataRow (
45- cells: [
46- DataCell (Text (entry.key)),
47- DataCell (
48- Column (
49- mainAxisAlignment: MainAxisAlignment .center,
50- children: (entry.value.toList ()..sort ())
51- .expand (
52- (v) => [
53- const SizedBox (height: Spacing .level3),
54- Tooltip (
55- message: v,
56- child: Text (
57- v,
58- overflow: TextOverflow .ellipsis,
59- maxLines: 1 ,
60- ),
61- ),
62- const SizedBox (height: Spacing .level3),
63- ],
64- )
65- .toList (),
66- ),
67- ),
68- ],
45+ return Scrollbar (
46+ controller: _scrollController,
47+ interactive: true ,
48+ child: SingleChildScrollView (
49+ controller: _scrollController,
50+ scrollDirection: Axis .horizontal,
51+ child: DataTable (
52+ dataRowMaxHeight: double .infinity,
53+ columns: const [
54+ DataColumn (
55+ label: Text ('Category' ),
6956 ),
70- )
71- .toList (),
57+ DataColumn (
58+ label: Text ('Values' ),
59+ ),
60+ ],
61+ rows: sortedEntries
62+ .map (
63+ (entry) => DataRow (
64+ cells: [
65+ DataCell (Text (entry.key)),
66+ DataCell (
67+ Column (
68+ mainAxisAlignment: MainAxisAlignment .start,
69+ crossAxisAlignment: CrossAxisAlignment .start,
70+ children: (entry.value.toList ()..sort ())
71+ .expand (
72+ (v) => [
73+ const SizedBox (height: Spacing .level3),
74+ Tooltip (
75+ message: v,
76+ child: Text (
77+ v,
78+ overflow: TextOverflow .ellipsis,
79+ maxLines: 1 ,
80+ ),
81+ ),
82+ const SizedBox (height: Spacing .level3),
83+ ],
84+ )
85+ .toList (),
86+ ),
87+ ),
88+ ],
89+ ),
90+ )
91+ .toList (),
92+ ),
93+ ),
7294 );
7395 }
7496}
0 commit comments