diff --git a/lib/widgets/refreshable_data_table.dart b/lib/widgets/refreshable_data_table.dart index 8959c033edc..bad9e2e7a71 100644 --- a/lib/widgets/refreshable_data_table.dart +++ b/lib/widgets/refreshable_data_table.dart @@ -99,9 +99,31 @@ class _ViamRefreshableDataTableState extends State { Widget build(BuildContext context) { return Column( children: [ - DataTable( - columns: const [DataColumn(label: Text('Reading')), DataColumn(label: Text('Value'))], - rows: readings.keys.map((e) => DataRow(cells: [DataCell(Text(e)), DataCell(Text(readings[e].toString()))])).toList()), + if (readings.isEmpty) + const Text('No sensor readings available') + else + DataTable( + columns: const [DataColumn(label: Text('Reading')), DataColumn(label: Text('Value'))], + rows: readings.keys + .map((e) => DataRow(cells: [ + DataCell(Text(e)), + DataCell( + SizedBox( + width: MediaQuery.of(context).size.width * 0.5, + height: 120, + child: Align( + alignment: Alignment.centerLeft, + child: SingleChildScrollView( + child: Padding( + padding: const EdgeInsets.all(8.0), + child: Text(readings[e].toString()), + ), + ), + ), + ), + ) + ])) + .toList()), if (widget.showLastRefreshed && lastRefreshed != null) Column(children: [ const SizedBox(height: 8), diff --git a/test/widget_tests/refreshable_data_table_test.dart b/test/widget_tests/refreshable_data_table_test.dart index 63bb97aaa3d..55da803d269 100644 --- a/test/widget_tests/refreshable_data_table_test.dart +++ b/test/widget_tests/refreshable_data_table_test.dart @@ -10,12 +10,26 @@ void main() { testWidgets('displays data', (tester) async { final widget = TestableWidget(child: ViamRefreshableDataTable(getData: FakeSensor('sensor').readings)); await tester.pumpWidget(widget); + await tester.pumpAndSettle(); final dataTable = find.byType(DataTable); expect(dataTable, findsOneWidget); }); + testWidgets('displays no sensor readings available', (tester) async { + final widget = TestableWidget( + child: ViamRefreshableDataTable( + getData: ({Map? extra}) async => {}, + ), + ); + await tester.pumpWidget(widget); + + final noSensorReadingsAvailable = find.textContaining(RegExp(r'No sensor readings available')); + + expect(noSensorReadingsAvailable, findsOneWidget); + }); + testWidgets('shows last refresh time', (tester) async { final widget = TestableWidget(child: ViamRefreshableDataTable(getData: FakeSensor('sensor').readings, showLastRefreshed: true)); await tester.pumpWidget(widget);