Commit c05e3ff
Changed files (4)
lib
model
test
model
lib/components/measurement_graph.dart
@@ -24,9 +24,9 @@ class _LineChart extends StatelessWidget {
builder: (context, settings, child) {
return Consumer<BloodPressureModel>(
builder: (context, model, child) {
- var end = settings.graphEnd;
+ var end = settings.displayDataEnd;
if (settings.graphStepSize == TimeStep.lifetime) end = DateTime.now();
- final dataFuture = model.getInTimeRange(settings.graphStart, end);
+ final dataFuture = model.getInTimeRange(settings.displayDataStart, end);
return FutureBuilder<UnmodifiableListView<BloodPressureRecord>>(
future: dataFuture,
@@ -164,24 +164,24 @@ class MeasurementGraph extends StatelessWidget {
const MeasurementGraph({super.key, this.height = 290});
void moveGraphWithStep(int directionalStep, Settings settings) {
- final oldStart = settings.graphStart;
- final oldEnd = settings.graphEnd;
+ final oldStart = settings.displayDataStart;
+ final oldEnd = settings.displayDataEnd;
switch (settings.graphStepSize) {
case TimeStep.day:
- settings.graphStart = oldStart.copyWith(day: oldStart.day + directionalStep);
- settings.graphEnd = oldEnd.copyWith(day: oldEnd.day + directionalStep);
+ settings.displayDataStart = oldStart.copyWith(day: oldStart.day + directionalStep);
+ settings.displayDataEnd = oldEnd.copyWith(day: oldEnd.day + directionalStep);
break;
case TimeStep.month:
- settings.graphStart = oldStart.copyWith(month: oldStart.month + directionalStep);
- settings.graphEnd = oldEnd.copyWith(month: oldEnd.month + directionalStep);
+ settings.displayDataStart = oldStart.copyWith(month: oldStart.month + directionalStep);
+ settings.displayDataEnd = oldEnd.copyWith(month: oldEnd.month + directionalStep);
break;
case TimeStep.year:
- settings.graphStart = oldStart.copyWith(year: oldStart.year + directionalStep);
- settings.graphEnd = oldEnd.copyWith(year: oldEnd.year + directionalStep);
+ settings.displayDataStart = oldStart.copyWith(year: oldStart.year + directionalStep);
+ settings.displayDataEnd = oldEnd.copyWith(year: oldEnd.year + directionalStep);
break;
case TimeStep.lifetime:
- settings.graphStart = DateTime.fromMillisecondsSinceEpoch(0);
- settings.graphEnd = oldStart;
+ settings.displayDataStart = DateTime.fromMillisecondsSinceEpoch(0);
+ settings.displayDataEnd = oldStart;
break;
}
}
@@ -225,20 +225,20 @@ class MeasurementGraph extends StatelessWidget {
final now = DateTime.now();
switch (settings.graphStepSize) {
case TimeStep.day:
- settings.graphStart = DateTime(now.year, now.month, now.day);
- settings.graphEnd = settings.graphStart.copyWith(day: now.day + 1);
+ settings.displayDataStart = DateTime(now.year, now.month, now.day);
+ settings.displayDataEnd = settings.displayDataStart.copyWith(day: now.day + 1);
break;
case TimeStep.month:
- settings.graphStart = DateTime(now.year, now.month);
- settings.graphEnd = settings.graphStart.copyWith(month: now.month + 1);
+ settings.displayDataStart = DateTime(now.year, now.month);
+ settings.displayDataEnd = settings.displayDataStart.copyWith(month: now.month + 1);
break;
case TimeStep.year:
- settings.graphStart = DateTime(now.year);
- settings.graphEnd = settings.graphStart.copyWith(year: now.year + 1);
+ settings.displayDataStart = DateTime(now.year);
+ settings.displayDataEnd = settings.displayDataStart.copyWith(year: now.year + 1);
break;
case TimeStep.lifetime:
- settings.graphStart = DateTime.fromMillisecondsSinceEpoch(0);
- settings.graphEnd = now;
+ settings.displayDataStart = DateTime.fromMillisecondsSinceEpoch(0);
+ settings.displayDataEnd = now;
break;
}
}
lib/components/measurement_list.dart
@@ -31,32 +31,36 @@ class MeasurementList extends StatelessWidget {
flex: 100,
child: Consumer<BloodPressureModel>(
builder: (context, model, child) {
- final items = model.getLastX(30);
- return FutureBuilder<UnmodifiableListView<BloodPressureRecord>>(
- future: items,
- builder: (BuildContext context, AsyncSnapshot<UnmodifiableListView<BloodPressureRecord>> recordsSnapsot) {
- assert(recordsSnapsot.connectionState != ConnectionState.none);
+ return Consumer<Settings>(
+ builder: (context, settings, child) {
+ final items = model.getInTimeRange(settings.displayDataStart, settings.displayDataEnd);
+ return FutureBuilder<UnmodifiableListView<BloodPressureRecord>>(
+ future: items,
+ builder: (BuildContext context, AsyncSnapshot<UnmodifiableListView<BloodPressureRecord>> recordsSnapsot) {
+ assert(recordsSnapsot.connectionState != ConnectionState.none);
- if (recordsSnapsot.connectionState == ConnectionState.waiting) {
- return const Text('loading...');
- } else {
- if (recordsSnapsot.hasError) {
- return Text('Error loading data:\n${recordsSnapsot.error}');
- } else {
- final data = recordsSnapsot.data ?? [];
- if (data.isNotEmpty && data.first.diastolic > 0) {
- return ListView.builder(
- itemCount: data.length,
- shrinkWrap: true,
- itemBuilder: (context, index) {
- return buildListItem(data[index]);
+ if (recordsSnapsot.connectionState == ConnectionState.waiting) {
+ return const Text('loading...');
+ } else {
+ if (recordsSnapsot.hasError) {
+ return Text('Error loading data:\n${recordsSnapsot.error}');
+ } else {
+ final data = recordsSnapsot.data ?? [];
+ if (data.isNotEmpty && data.first.diastolic > 0) {
+ return ListView.builder(
+ itemCount: data.length,
+ shrinkWrap: true,
+ itemBuilder: (context, index) {
+ return buildListItem(data[index]);
+ }
+ );
+ } else {
+ return const Text('no data');
}
- );
- } else {
- return const Text('no data');
+ }
+ }
}
- }
- }
+ );
}
);
}
lib/model/settings_store.dart
@@ -42,18 +42,18 @@ class Settings extends ChangeNotifier {
notifyListeners();
}
- DateTime get graphStart {
+ DateTime get displayDataStart {
return DateTime.fromMillisecondsSinceEpoch(_prefs.getInt('graphStart') ?? -1);
}
- set graphStart(DateTime newGraphStart) {
+ set displayDataStart(DateTime newGraphStart) {
_prefs.setInt('graphStart', newGraphStart.millisecondsSinceEpoch);
notifyListeners();
}
- DateTime get graphEnd {
+ DateTime get displayDataEnd {
return DateTime.fromMillisecondsSinceEpoch(_prefs.getInt('graphEnd') ?? -1);
}
- set graphEnd(DateTime newGraphEnd) {
+ set displayDataEnd(DateTime newGraphEnd) {
_prefs.setInt('graphEnd', newGraphEnd.millisecondsSinceEpoch);
notifyListeners();
}
test/model/settings_test.dart
@@ -26,8 +26,8 @@ void main() {
test('fields defaults should be set after initialization', () async {
var s = await Settings.create();
expect(s.graphStepSize, TimeStep.day);
- expect(s.graphStart, DateTime.fromMillisecondsSinceEpoch(-1));
- expect(s.graphEnd, DateTime.fromMillisecondsSinceEpoch(-1));
+ expect(s.displayDataStart, DateTime.fromMillisecondsSinceEpoch(-1));
+ expect(s.displayDataEnd, DateTime.fromMillisecondsSinceEpoch(-1));
expect(s.followSystemDarkMode, true);
expect(s.darkMode, true);
expect(s.accentColor.value, 0xFF009688);
@@ -55,8 +55,8 @@ void main() {
});
s.graphStepSize = TimeStep.lifetime;
- s.graphStart = DateTime.fromMillisecondsSinceEpoch(10000);
- s.graphEnd = DateTime.fromMillisecondsSinceEpoch(200000);
+ s.displayDataStart = DateTime.fromMillisecondsSinceEpoch(10000);
+ s.displayDataEnd = DateTime.fromMillisecondsSinceEpoch(200000);
s.followSystemDarkMode = false;
s.darkMode = false;
s.accentColor = s.createMaterialColor(0xFF942DA4);
@@ -69,8 +69,8 @@ void main() {
s.iconSize = 50;
- expect(s.graphStart, DateTime.fromMillisecondsSinceEpoch(10000));
- expect(s.graphEnd, DateTime.fromMillisecondsSinceEpoch(200000));
+ expect(s.displayDataStart, DateTime.fromMillisecondsSinceEpoch(10000));
+ expect(s.displayDataEnd, DateTime.fromMillisecondsSinceEpoch(200000));
expect(s.followSystemDarkMode, false);
expect(s.darkMode, false);
expect(s.accentColor.value, 0xFF942DA4);
@@ -91,8 +91,8 @@ void main() {
});
s.graphStepSize = TimeStep.lifetime;
- s.graphStart = DateTime.fromMillisecondsSinceEpoch(10000);
- s.graphEnd = DateTime.fromMillisecondsSinceEpoch(200000);
+ s.displayDataStart = DateTime.fromMillisecondsSinceEpoch(10000);
+ s.displayDataEnd = DateTime.fromMillisecondsSinceEpoch(200000);
s.followSystemDarkMode = false;
s.darkMode = false;
s.accentColor = s.createMaterialColor(0xFF942DA4);