Commit 3148095
Changed files (6)
app
lib
components
l10n
test
ui
components
bluetooth_input
app/lib/components/bluetooth_input/measurement_failure.dart
@@ -9,8 +9,6 @@ class MeasurementFailure extends StatelessWidget {
/// Called when the user requests closing.
final void Function() onTap;
-
- // TODO: test
@override
Widget build(BuildContext context) => GestureDetector(
app/lib/components/bluetooth_input/measurement_success.dart
@@ -0,0 +1,32 @@
+import 'package:blood_pressure_app/components/bluetooth_input/input_card.dart';
+import 'package:flutter/material.dart';
+import 'package:flutter_gen/gen_l10n/app_localizations.dart';
+
+/// Indication of a successful bluetooth measurement.
+class MeasurementSuccess extends StatelessWidget {
+ /// Indicate a successful while taking a bluetooth measurement.
+ const MeasurementSuccess({super.key, required this.onTap});
+
+ /// Called when the user requests closing.
+ final void Function() onTap;
+
+ @override
+ Widget build(BuildContext context) => GestureDetector(
+ onTap: onTap,
+ child: InputCard(
+ onClosed: onTap,
+ child: Center(
+ child: Column(
+ mainAxisAlignment: MainAxisAlignment.center,
+ children: [
+ const Icon(Icons.done, color: Colors.green),
+ const SizedBox(height: 8,),
+ Text(AppLocalizations.of(context)!.measurementSuccess),
+ const SizedBox(height: 8,),
+ ],
+ ),
+ ),
+ ),
+ );
+
+}
app/lib/components/bluetooth_input.dart
@@ -7,6 +7,7 @@ import 'package:blood_pressure_app/components/bluetooth_input/closed_bluetooth_i
import 'package:blood_pressure_app/components/bluetooth_input/device_selection.dart';
import 'package:blood_pressure_app/components/bluetooth_input/input_card.dart';
import 'package:blood_pressure_app/components/bluetooth_input/measurement_failure.dart';
+import 'package:blood_pressure_app/components/bluetooth_input/measurement_success.dart';
import 'package:blood_pressure_app/model/storage/storage.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
@@ -81,17 +82,8 @@ class _BluetoothInputState extends State<BluetoothInput> {
BleReadFailure() => MeasurementFailure(
onTap: _returnToIdle,
),
- BleReadSuccess() => _buildMainCard(context,
- child: Center(
- child: Column(
- mainAxisAlignment: MainAxisAlignment.center,
- children: [
- const Icon(Icons.done, color: Colors.green),
- const SizedBox(height: 8,),
- Text(AppLocalizations.of(context)!.measurementSuccess),
- ],
- ),
- ),
+ BleReadSuccess() => MeasurementSuccess(
+ onTap: _returnToIdle,
),
},
),
app/lib/l10n/app_en.arb
@@ -509,9 +509,9 @@
"@errBleNoPerms": {},
"bluetoothDisabled": "Bluetooth disabled",
"@bluetoothDisabled": {},
- "errMeasurementRead": "Error reading measurement!",
+ "errMeasurementRead": "Error while taking measurement!",
"@errBluetooth": {},
- "measurementSuccess": "Measurement taken successfully",
+ "measurementSuccess": "Measurement taken successfully!",
"@measurementSuccess": {},
"connect": "Connect",
"@connect": {},
app/test/ui/components/bluetooth_input/measurement_failure_test.dart
@@ -8,7 +8,7 @@ import '../util.dart';
void main() {
- testWidgets('should show states correctly', (WidgetTester tester) async {
+ testWidgets('should show everything and be interactive', (WidgetTester tester) async {
int tapCount = 0;
await tester.pumpWidget(materialApp(MeasurementFailure(
onTap: () => tapCount++,
app/test/ui/components/bluetooth_input/measurement_success_test.dart
@@ -0,0 +1,30 @@
+
+import 'package:blood_pressure_app/components/bluetooth_input/measurement_success.dart';
+import 'package:flutter/material.dart';
+import 'package:flutter_gen/gen_l10n/app_localizations.dart';
+import 'package:flutter_test/flutter_test.dart';
+
+import '../util.dart';
+
+
+void main() {
+ testWidgets('should show everything and be interactive', (WidgetTester tester) async {
+ int tapCount = 0;
+ await tester.pumpWidget(materialApp(MeasurementSuccess(
+ onTap: () => tapCount++,
+ )));
+
+ expect(find.byIcon(Icons.done), findsOneWidget);
+ expect(find.byIcon(Icons.close), findsOneWidget);
+ final localizations = await AppLocalizations.delegate.load(const Locale('en'));
+ expect(find.text(localizations.measurementSuccess), findsOneWidget);
+
+ expect(tapCount, 0);
+ await tester.tap(find.text(localizations.measurementSuccess));
+ await tester.pump();
+ expect(tapCount, 1);
+ await tester.tap(find.byIcon(Icons.close));
+ await tester.pump();
+ expect(tapCount, 2);
+ });
+}