Commit 93c026d
Changed files (6)
lib
test
lib/components/display_interval_picker.dart
@@ -65,7 +65,7 @@ class IntervalPicker extends StatelessWidget {
if (value == TimeStep.custom) {
final res = await showDateRangePicker(
context: context,
- firstDate: DateTime.fromMillisecondsSinceEpoch(0),
+ firstDate: DateTime.fromMillisecondsSinceEpoch(1),
lastDate: DateTime.now());
if (res != null) {
settings.graphStepSize = value!;
lib/model/blood_pressure.dart
@@ -102,14 +102,26 @@ class BloodPressureModel extends ChangeNotifier {
@immutable
class BloodPressureRecord {
- final DateTime creationTime;
+ late final DateTime _creationTime;
final int? systolic;
final int? diastolic;
final int? pulse;
final String notes;
- const BloodPressureRecord(
- this.creationTime, this.systolic, this.diastolic, this.pulse, this.notes);
+ BloodPressureRecord(DateTime creationTime, this.systolic, this.diastolic, this.pulse, this.notes) {
+ this.creationTime = creationTime;
+ }
+
+ DateTime get creationTime => _creationTime;
+ /// datetime needs to be after epoch
+ set creationTime(DateTime value) {
+ if (creationTime.millisecondsSinceEpoch > 0) {
+ _creationTime = creationTime;
+ } else {
+ assert(false, "Tried to create BloodPressureRecord at or before epoch");
+ _creationTime = DateTime.fromMillisecondsSinceEpoch(1);
+ }
+ }
@override
String toString() {
lib/model/ram_only_implementations.dart
@@ -499,7 +499,7 @@ class RamSettings extends ChangeNotifier implements Settings {
displayDataEnd = oldEnd.copyWith(year: oldEnd.year + directionalStep);
break;
case TimeStep.lifetime:
- displayDataStart = DateTime.fromMillisecondsSinceEpoch(0);
+ displayDataStart = DateTime.fromMillisecondsSinceEpoch(1);
displayDataEnd = DateTime.now();
break;
case TimeStep.last30Days:
@@ -531,7 +531,7 @@ class RamSettings extends ChangeNotifier implements Settings {
final start = DateTime(now.year);
return [start, start.copyWith(year: now.year + 1)];
case TimeStep.lifetime:
- final start = DateTime.fromMillisecondsSinceEpoch(0);
+ final start = DateTime.fromMillisecondsSinceEpoch(1);
return [start, now];
case TimeStep.last7Days:
final start = now.copyWith(day: now.day-7);
lib/model/settings_store.dart
@@ -144,7 +144,7 @@ class Settings extends ChangeNotifier {
displayDataEnd = oldEnd.copyWith(year: oldEnd.year + directionalStep);
break;
case TimeStep.lifetime:
- displayDataStart = DateTime.fromMillisecondsSinceEpoch(0);
+ displayDataStart = DateTime.fromMillisecondsSinceEpoch(1);
displayDataEnd = DateTime.now();
break;
case TimeStep.last30Days:
@@ -175,7 +175,7 @@ class Settings extends ChangeNotifier {
final start = DateTime(now.year);
return [start, start.copyWith(year: now.year + 1)];
case TimeStep.lifetime:
- final start = DateTime.fromMillisecondsSinceEpoch(0);
+ final start = DateTime.fromMillisecondsSinceEpoch(1);
return [start, now];
case TimeStep.last7Days:
final start = now.copyWith(day: now.day-7);
@@ -191,7 +191,7 @@ class Settings extends ChangeNotifier {
DateTime get displayDataStart {
final s = _displayDataStart ?? getMostRecentDisplayIntervall()[0];
- if(s.millisecondsSinceEpoch < 0) {
+ if(s.millisecondsSinceEpoch < 1) {
changeStepSize(TimeStep.last7Days);
}
return s;
@@ -204,7 +204,7 @@ class Settings extends ChangeNotifier {
DateTime get displayDataEnd {
final s = _displayDataEnd ?? getMostRecentDisplayIntervall()[1];
- if(s.millisecondsSinceEpoch < 0) {
+ if(s.millisecondsSinceEpoch < 1) {
changeStepSize(TimeStep.last7Days);
}
return s;
lib/screens/add_measurement.dart
@@ -76,7 +76,7 @@ class _AddMeasurementPageState extends State<AddMeasurementPage> {
final errTimeAfterNow = AppLocalizations.of(context)!.errTimeAfterNow;
var selectedTime = await showDateTimePicker(
context: context,
- firstDate: DateTime.fromMillisecondsSinceEpoch(0),
+ firstDate: DateTime.fromMillisecondsSinceEpoch(1),
lastDate: selectionEnd,
initialDate: _time);
if (selectedTime != null) {
test/model/bood_pressure_test.dart
@@ -30,7 +30,7 @@ void main() {
test('should start empty', () async {
var m = await BloodPressureModel.create(dbPath: '/tmp/bp_test/should_start_empty');
- expect((await m.getInTimeRange(DateTime.fromMillisecondsSinceEpoch(0), DateTime.now())).length, 0);
+ expect((await m.getInTimeRange(DateTime.fromMillisecondsSinceEpoch(1), DateTime.now())).length, 0);
});
test('should notify when adding entries', () async {
@@ -41,7 +41,7 @@ void main() {
listenerCalls++;
});
- await m.add(BloodPressureRecord(DateTime.fromMillisecondsSinceEpoch(0), 0, 0, 0, ''));
+ await m.add(BloodPressureRecord(DateTime.fromMillisecondsSinceEpoch(1), 0, 0, 0, ''));
await m.add(BloodPressureRecord(DateTime.fromMillisecondsSinceEpoch(1), 0, 0, 0, ''));
await m.add(BloodPressureRecord(DateTime.fromMillisecondsSinceEpoch(2), 0, 0, 0, ''));
@@ -54,7 +54,7 @@ void main() {
var r = BloodPressureRecord(DateTime.fromMillisecondsSinceEpoch(31415926), -172, 10000, 0,
"((V⍳V)=⍳⍴V)/V←,V ⌷←⍳→⍴∆∇⊃‾⍎⍕⌈๏ แผ่นดินฮั่นเABCDEFGHIJKLMNOPQRSTUVWXYZ /0123456789abcdefghijklmnopqrstuvwxyz £©µÀÆÖÞßéöÿ–—‘“”„†•…‰™œŠŸž€ ΑΒΓΔΩαβγδω АБВГДабвг, \n \t д∀∂∈ℝ∧∪≡∞ ↑↗↨↻⇣ ┐┼╔╘░►☺♀ fi�⑀₂ἠḂӥẄɐː⍎אԱა");
m.addListener(() async {
- var res = (await m.getInTimeRange(DateTime.fromMillisecondsSinceEpoch(0), DateTime.now())).first;
+ var res = (await m.getInTimeRange(DateTime.fromMillisecondsSinceEpoch(1), DateTime.now())).first;
expect(res, isNotNull);
expect(res.creationTime, r.creationTime);
expect(res.systolic, r.systolic);
@@ -74,7 +74,7 @@ void main() {
await m.add(r);
var m2 = await BloodPressureModel.create(dbPath: '/tmp/bp_test/should_store_between_sessions');
- var res = (await m2.getInTimeRange(DateTime.fromMillisecondsSinceEpoch(0), DateTime.now())).first;
+ var res = (await m2.getInTimeRange(DateTime.fromMillisecondsSinceEpoch(1), DateTime.now())).first;
expect(res.creationTime, r.creationTime);
expect(res.systolic, r.systolic);
@@ -87,13 +87,13 @@ void main() {
var m = await BloodPressureModel.create(dbPath: '/tmp/bp_test/should_delete');
await m.add(BloodPressureRecord(DateTime.fromMillisecondsSinceEpoch(758934), 123, 87, 65, ';)'));
- expect((await m.getInTimeRange(DateTime.fromMillisecondsSinceEpoch(0), DateTime.now())).length, 1);
- expect((await m.getInTimeRange(DateTime.fromMillisecondsSinceEpoch(0), DateTime.now())).length, 1);
+ expect((await m.getInTimeRange(DateTime.fromMillisecondsSinceEpoch(1), DateTime.now())).length, 1);
+ expect((await m.getInTimeRange(DateTime.fromMillisecondsSinceEpoch(1), DateTime.now())).length, 1);
await m.delete(DateTime.fromMillisecondsSinceEpoch(758934));
- expect((await m.getInTimeRange(DateTime.fromMillisecondsSinceEpoch(0), DateTime.now())).length, 0);
- expect((await m.getInTimeRange(DateTime.fromMillisecondsSinceEpoch(0), DateTime.now())).length, 0);
+ expect((await m.getInTimeRange(DateTime.fromMillisecondsSinceEpoch(1), DateTime.now())).length, 0);
+ expect((await m.getInTimeRange(DateTime.fromMillisecondsSinceEpoch(1), DateTime.now())).length, 0);
});
});
@@ -104,7 +104,7 @@ void main() {
test('should start empty', () async {
var m = RamBloodPressureModel();
- expect((await m.getInTimeRange(DateTime.fromMillisecondsSinceEpoch(0), DateTime.now())).length, 0);
+ expect((await m.getInTimeRange(DateTime.fromMillisecondsSinceEpoch(1), DateTime.now())).length, 0);
});
test('should notify when adding entries', () async {
@@ -115,7 +115,7 @@ void main() {
listenerCalls++;
});
- await m.add(BloodPressureRecord(DateTime.fromMillisecondsSinceEpoch(0), 0, 0, 0, ''));
+ await m.add(BloodPressureRecord(DateTime.fromMillisecondsSinceEpoch(1), 0, 0, 0, ''));
await m.add(BloodPressureRecord(DateTime.fromMillisecondsSinceEpoch(1), 0, 0, 0, ''));
await m.add(BloodPressureRecord(DateTime.fromMillisecondsSinceEpoch(2), 0, 0, 0, ''));
@@ -128,7 +128,7 @@ void main() {
var r = BloodPressureRecord(DateTime.fromMillisecondsSinceEpoch(31415926), -172, 10000, 0,
"((V⍳V)=⍳⍴V)/V←,V ⌷←⍳→⍴∆∇⊃‾⍎⍕⌈๏ แผ่นดินฮั่นเABCDEFGHIJKLMNOPQRSTUVWXYZ /0123456789abcdefghijklmnopqrstuvwxyz £©µÀÆÖÞßéöÿ–—‘“”„†•…‰™œŠŸž€ ΑΒΓΔΩαβγδω АБВГДабвг, \n \t д∀∂∈ℝ∧∪≡∞ ↑↗↨↻⇣ ┐┼╔╘░►☺♀ fi�⑀₂ἠḂӥẄɐː⍎אԱა");
m.addListener(() async {
- var res = (await m.getInTimeRange(DateTime.fromMillisecondsSinceEpoch(0), DateTime.now())).first;
+ var res = (await m.getInTimeRange(DateTime.fromMillisecondsSinceEpoch(1), DateTime.now())).first;
expect(res, isNotNull);
expect(res.creationTime, r.creationTime);
expect(res.systolic, r.systolic);