-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmodel.dart
55 lines (44 loc) · 1.42 KB
/
model.dart
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
import 'package:intl/intl.dart';
import 'package:objectbox/objectbox.dart';
// ignore_for_file: public_member_api_docs
@Entity()
@Sync()
class Task {
int id;
String text;
/// Note: DateTime is stored in milliseconds without time zone info.
@Property(type: PropertyType.date)
DateTime dateCreated;
@Property(type: PropertyType.date)
DateTime dateFinished;
/// Create task with the given text at the current time.
Task(this.text, {this.id = 0, DateTime? dateCreated, DateTime? dateFinished})
: dateCreated = dateCreated ?? DateTime.now(),
dateFinished = dateFinished ?? DateTime.fromMicrosecondsSinceEpoch(0);
bool isFinished() {
return dateFinished.millisecondsSinceEpoch != 0;
}
void setIsFinished(bool isFinished) {
if (isFinished) {
dateFinished = DateTime.now();
} else {
dateFinished = DateTime.fromMicrosecondsSinceEpoch(0);
}
}
String get dateCreatedFormat =>
DateFormat('dd.MM.yy HH:mm:ss').format(dateCreated);
String get dateFinishedFormat =>
DateFormat('dd.MM.yy HH:mm:ss').format(dateFinished);
/// If the task is new returns 'Created on <date>',
/// if it is finished 'Finished on <date>'. The date is formatted
/// for the current locale.
String getStateText() {
String text;
if (isFinished()) {
text = 'Finished on $dateFinishedFormat';
} else {
text = 'Created on $dateCreatedFormat';
}
return text;
}
}