Skip to content

Commit ee30b1e

Browse files
authored
[APP-9815] Part 2: Viam Mobile - Displaying sensor data improvements (#457)
* create scrollable * add no sensors readings when none * fix and add test * Wait for async getReadings() to complete * add padding
1 parent 978ef57 commit ee30b1e

File tree

2 files changed

+39
-3
lines changed

2 files changed

+39
-3
lines changed

lib/widgets/refreshable_data_table.dart

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -99,9 +99,31 @@ class _ViamRefreshableDataTableState extends State<ViamRefreshableDataTable> {
9999
Widget build(BuildContext context) {
100100
return Column(
101101
children: [
102-
DataTable(
103-
columns: const <DataColumn>[DataColumn(label: Text('Reading')), DataColumn(label: Text('Value'))],
104-
rows: readings.keys.map((e) => DataRow(cells: [DataCell(Text(e)), DataCell(Text(readings[e].toString()))])).toList()),
102+
if (readings.isEmpty)
103+
const Text('No sensor readings available')
104+
else
105+
DataTable(
106+
columns: const <DataColumn>[DataColumn(label: Text('Reading')), DataColumn(label: Text('Value'))],
107+
rows: readings.keys
108+
.map((e) => DataRow(cells: [
109+
DataCell(Text(e)),
110+
DataCell(
111+
SizedBox(
112+
width: MediaQuery.of(context).size.width * 0.5,
113+
height: 120,
114+
child: Align(
115+
alignment: Alignment.centerLeft,
116+
child: SingleChildScrollView(
117+
child: Padding(
118+
padding: const EdgeInsets.all(8.0),
119+
child: Text(readings[e].toString()),
120+
),
121+
),
122+
),
123+
),
124+
)
125+
]))
126+
.toList()),
105127
if (widget.showLastRefreshed && lastRefreshed != null)
106128
Column(children: [
107129
const SizedBox(height: 8),

test/widget_tests/refreshable_data_table_test.dart

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,26 @@ void main() {
1010
testWidgets('displays data', (tester) async {
1111
final widget = TestableWidget(child: ViamRefreshableDataTable(getData: FakeSensor('sensor').readings));
1212
await tester.pumpWidget(widget);
13+
await tester.pumpAndSettle();
1314

1415
final dataTable = find.byType(DataTable);
1516

1617
expect(dataTable, findsOneWidget);
1718
});
1819

20+
testWidgets('displays no sensor readings available', (tester) async {
21+
final widget = TestableWidget(
22+
child: ViamRefreshableDataTable(
23+
getData: ({Map<String, dynamic>? extra}) async => <String, dynamic>{},
24+
),
25+
);
26+
await tester.pumpWidget(widget);
27+
28+
final noSensorReadingsAvailable = find.textContaining(RegExp(r'No sensor readings available'));
29+
30+
expect(noSensorReadingsAvailable, findsOneWidget);
31+
});
32+
1933
testWidgets('shows last refresh time', (tester) async {
2034
final widget = TestableWidget(child: ViamRefreshableDataTable(getData: FakeSensor('sensor').readings, showLastRefreshed: true));
2135
await tester.pumpWidget(widget);

0 commit comments

Comments
 (0)