Commit 6ce94f2
Changed files (6)
app
lib
components
screens
app/lib/bluetooth/ble_read_cubit.dart
@@ -1,6 +1,8 @@
import 'dart:async';
+import 'package:blood_pressure_app/bluetooth/characteristic_decoder.dart';
import 'package:blood_pressure_app/logging.dart';
+import 'package:blood_pressure_app/model/blood_pressure/record.dart';
import 'package:collection/collection.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/foundation.dart';
@@ -81,7 +83,9 @@ class BleReadCubit extends Cubit<BleReadState> {
return;
}
- // TODO: decode data before emitting success.
- emit(BleReadSuccess(data));
+ Log.trace('received $data');
+ final record = CharacteristicDecoder.decodeMeasurement(data)
+ Log.trace('decoded $record');
+ emit(BleReadSuccess(record));
}
}
app/lib/bluetooth/ble_read_state.dart
@@ -15,6 +15,6 @@ class BleReadSuccess extends BleReadState {
/// Indicate a successful reading of a ble characteristic.
BleReadSuccess(this.data);
- /// Raw binary data received from the device.
- final List<int> data;
+ /// Measurement decoded from the device.
+ final BloodPressureRecord data;
}
app/lib/components/dialoges/add_measurement_dialoge.dart
@@ -4,7 +4,6 @@ import 'package:blood_pressure_app/components/bluetooth_input.dart';
import 'package:blood_pressure_app/components/date_time_picker.dart';
import 'package:blood_pressure_app/components/dialoges/fullscreen_dialoge.dart';
import 'package:blood_pressure_app/components/settings/settings_widgets.dart';
-import 'package:blood_pressure_app/main.dart'; // TODO: remove
import 'package:blood_pressure_app/model/blood_pressure/medicine/medicine.dart';
import 'package:blood_pressure_app/model/blood_pressure/medicine/medicine_intake.dart';
import 'package:blood_pressure_app/model/blood_pressure/needle_pin.dart';
@@ -287,9 +286,6 @@ class _AddEntryDialogeState extends State<AddEntryDialoge> {
settings: widget.settings,
onMeasurement: (record) => setState(() => _loadFields(record)),
),
- TextButton(onPressed: () {
- Clipboard.setData(ClipboardData(text: debugLog.join('\n')));
- }, child: Text('copy debug')), // TODO: remove
if (widget.settings.allowManualTimeInput)
_buildTimeInput(localizations),
Form(
app/lib/components/bluetooth_input.dart
@@ -86,7 +86,10 @@ class _BluetoothInputState extends State<BluetoothInput> {
onTap: _returnToIdle,
),
BleReadSuccess() => MeasurementSuccess(
- onTap: _returnToIdle,
+ onTap: () {
+ onMeasurement(state.data);
+ return _returnToIdle;
+ }(),
),
},
),
app/lib/screens/home_screen.dart
@@ -53,37 +53,37 @@ class AppHome extends StatelessWidget {
return Scaffold(
body: OrientationBuilder(
builder: (context, orientation) {
- if (orientation == Orientation.landscape) {
- return MeasurementGraph(
- height: MediaQuery.of(context).size.height,
- );
- }
- return Center(
- child: Padding(
- padding: const EdgeInsets.only(top: 20),
- child: Consumer<IntakeHistory>(builder: (context, intakeHistory, child) =>
- Consumer<IntervallStoreManager>(builder: (context, intervalls, child) =>
- Consumer<Settings>(builder: (context, settings, child) =>
- Column(children: [
- const MeasurementGraph(),
- Expanded(
- child: (settings.useLegacyList) ?
- LegacyMeasurementsList(context) :
- BloodPressureBuilder(
- rangeType: IntervallStoreManagerLocation.mainPage,
- onData: (context, records) => MeasurementList(
- settings: settings,
- records: records,
- intakes: intakeHistory.getIntakes(intervalls.mainPage.currentRange),
+ if (orientation == Orientation.landscape) {
+ return MeasurementGraph(
+ height: MediaQuery.of(context).size.height,
+ );
+ }
+ return Center(
+ child: Padding(
+ padding: const EdgeInsets.only(top: 20),
+ child: Consumer<IntakeHistory>(builder: (context, intakeHistory, child) =>
+ Consumer<IntervallStoreManager>(builder: (context, intervalls, child) =>
+ Consumer<Settings>(builder: (context, settings, child) =>
+ Column(children: [
+ const MeasurementGraph(),
+ Expanded(
+ child: (settings.useLegacyList) ?
+ LegacyMeasurementsList(context) :
+ BloodPressureBuilder(
+ rangeType: IntervallStoreManagerLocation.mainPage,
+ onData: (context, records) => MeasurementList(
+ settings: settings,
+ records: records,
+ intakes: intakeHistory.getIntakes(intervalls.mainPage.currentRange),
+ ),
),
- ),
- ),
- ],),
- ),),
+ ),
+ ],),
+ ),),
+ ),
),
- ),
- );
- },
+ );
+ },
),
floatingActionButton: OrientationBuilder(
builder: (context, orientation) {
app/lib/logging.dart
@@ -16,4 +16,11 @@ class Log {
}
}
}
-}
\ No newline at end of file
+
+ /// Log a message in debug more
+ static void trace(String message) {
+ if (kDebugMode && !testExpectError) {
+ debugPrint('TRACE: $message');
+ }
+ }
+}