Merge pull request #1568 from GetStream/fix/nullable-date
This commit is contained in:
@@ -1,5 +1,10 @@
|
||||
## Upcoming
|
||||
|
||||
🐞 Fixed
|
||||
|
||||
- [[#1422]](https://github.com/GetStream/stream-chat-flutter/issues/1422) Fixed `User.createdAt` property using
|
||||
currentTime when the ws connection is not established.
|
||||
|
||||
✅ Added
|
||||
|
||||
- Added support for `ChatPersistenceClient.isConnected` for checking if the client is connected to the database.
|
||||
|
||||
@@ -35,8 +35,8 @@ class User extends Equatable {
|
||||
this.role,
|
||||
String? name,
|
||||
String? image,
|
||||
DateTime? createdAt,
|
||||
DateTime? updatedAt,
|
||||
this.createdAt,
|
||||
this.updatedAt,
|
||||
this.lastActive,
|
||||
Map<String, Object?> extraData = const {},
|
||||
this.online = false,
|
||||
@@ -44,8 +44,7 @@ class User extends Equatable {
|
||||
this.banExpires,
|
||||
this.teams = const [],
|
||||
this.language,
|
||||
}) : createdAt = createdAt ?? DateTime.now(),
|
||||
updatedAt = updatedAt ?? DateTime.now(),
|
||||
}) :
|
||||
// For backwards compatibility, set 'name', 'image' in [extraData].
|
||||
extraData = {
|
||||
...extraData,
|
||||
@@ -104,11 +103,11 @@ class User extends Equatable {
|
||||
|
||||
/// Date of user creation.
|
||||
@JsonKey(includeToJson: false)
|
||||
final DateTime createdAt;
|
||||
final DateTime? createdAt;
|
||||
|
||||
/// Date of last user update.
|
||||
@JsonKey(includeToJson: false)
|
||||
final DateTime updatedAt;
|
||||
final DateTime? updatedAt;
|
||||
|
||||
/// Date of last user connection.
|
||||
@JsonKey(includeToJson: false)
|
||||
|
||||
@@ -198,8 +198,8 @@ void main() {
|
||||
expect(user.banned, false);
|
||||
expect(user.teams, []);
|
||||
expect(user.lastActive, null);
|
||||
expect(user.createdAt, isNotNull);
|
||||
expect(user.updatedAt, isNotNull);
|
||||
expect(user.createdAt, null);
|
||||
expect(user.updatedAt, null);
|
||||
});
|
||||
|
||||
test('default values, parse json', () {
|
||||
@@ -214,8 +214,8 @@ void main() {
|
||||
expect(user.banned, false);
|
||||
expect(user.teams, []);
|
||||
expect(user.lastActive, null);
|
||||
expect(user.createdAt, isNotNull);
|
||||
expect(user.updatedAt, isNotNull);
|
||||
expect(user.createdAt, null);
|
||||
expect(user.updatedAt, null);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
## Upcoming
|
||||
|
||||
- Added support for `StreamChatPersistenceClient.isConnected` for checking if the client is connected to the database.
|
||||
- [[#1422]](https://github.com/GetStream/stream-chat-flutter/issues/1422) Removed default values
|
||||
from `UserEntity` `createdAt` and `updatedAt` fields.
|
||||
|
||||
## 6.1.0
|
||||
|
||||
|
||||
@@ -49,7 +49,7 @@ class DriftChatDatabase extends _$DriftChatDatabase {
|
||||
|
||||
// you should bump this number whenever you change or add a table definition.
|
||||
@override
|
||||
int get schemaVersion => 10;
|
||||
int get schemaVersion => 11;
|
||||
|
||||
@override
|
||||
MigrationStrategy get migration => MigrationStrategy(
|
||||
|
||||
@@ -3651,18 +3651,14 @@ class $UsersTable extends Users with TableInfo<$UsersTable, UserEntity> {
|
||||
const VerificationMeta('createdAt');
|
||||
@override
|
||||
late final GeneratedColumn<DateTime> createdAt = GeneratedColumn<DateTime>(
|
||||
'created_at', aliasedName, false,
|
||||
type: DriftSqlType.dateTime,
|
||||
requiredDuringInsert: false,
|
||||
defaultValue: currentDateAndTime);
|
||||
'created_at', aliasedName, true,
|
||||
type: DriftSqlType.dateTime, requiredDuringInsert: false);
|
||||
static const VerificationMeta _updatedAtMeta =
|
||||
const VerificationMeta('updatedAt');
|
||||
@override
|
||||
late final GeneratedColumn<DateTime> updatedAt = GeneratedColumn<DateTime>(
|
||||
'updated_at', aliasedName, false,
|
||||
type: DriftSqlType.dateTime,
|
||||
requiredDuringInsert: false,
|
||||
defaultValue: currentDateAndTime);
|
||||
'updated_at', aliasedName, true,
|
||||
type: DriftSqlType.dateTime, requiredDuringInsert: false);
|
||||
static const VerificationMeta _lastActiveMeta =
|
||||
const VerificationMeta('lastActive');
|
||||
@override
|
||||
@@ -3773,9 +3769,9 @@ class $UsersTable extends Users with TableInfo<$UsersTable, UserEntity> {
|
||||
language: attachedDatabase.typeMapping
|
||||
.read(DriftSqlType.string, data['${effectivePrefix}language']),
|
||||
createdAt: attachedDatabase.typeMapping
|
||||
.read(DriftSqlType.dateTime, data['${effectivePrefix}created_at'])!,
|
||||
.read(DriftSqlType.dateTime, data['${effectivePrefix}created_at']),
|
||||
updatedAt: attachedDatabase.typeMapping
|
||||
.read(DriftSqlType.dateTime, data['${effectivePrefix}updated_at'])!,
|
||||
.read(DriftSqlType.dateTime, data['${effectivePrefix}updated_at']),
|
||||
lastActive: attachedDatabase.typeMapping
|
||||
.read(DriftSqlType.dateTime, data['${effectivePrefix}last_active']),
|
||||
online: attachedDatabase.typeMapping
|
||||
@@ -3808,10 +3804,10 @@ class UserEntity extends DataClass implements Insertable<UserEntity> {
|
||||
final String? language;
|
||||
|
||||
/// Date of user creation
|
||||
final DateTime createdAt;
|
||||
final DateTime? createdAt;
|
||||
|
||||
/// Date of last user update
|
||||
final DateTime updatedAt;
|
||||
final DateTime? updatedAt;
|
||||
|
||||
/// Date of last user connection
|
||||
final DateTime? lastActive;
|
||||
@@ -3828,8 +3824,8 @@ class UserEntity extends DataClass implements Insertable<UserEntity> {
|
||||
{required this.id,
|
||||
this.role,
|
||||
this.language,
|
||||
required this.createdAt,
|
||||
required this.updatedAt,
|
||||
this.createdAt,
|
||||
this.updatedAt,
|
||||
this.lastActive,
|
||||
required this.online,
|
||||
required this.banned,
|
||||
@@ -3844,8 +3840,12 @@ class UserEntity extends DataClass implements Insertable<UserEntity> {
|
||||
if (!nullToAbsent || language != null) {
|
||||
map['language'] = Variable<String>(language);
|
||||
}
|
||||
map['created_at'] = Variable<DateTime>(createdAt);
|
||||
map['updated_at'] = Variable<DateTime>(updatedAt);
|
||||
if (!nullToAbsent || createdAt != null) {
|
||||
map['created_at'] = Variable<DateTime>(createdAt);
|
||||
}
|
||||
if (!nullToAbsent || updatedAt != null) {
|
||||
map['updated_at'] = Variable<DateTime>(updatedAt);
|
||||
}
|
||||
if (!nullToAbsent || lastActive != null) {
|
||||
map['last_active'] = Variable<DateTime>(lastActive);
|
||||
}
|
||||
@@ -3865,8 +3865,8 @@ class UserEntity extends DataClass implements Insertable<UserEntity> {
|
||||
id: serializer.fromJson<String>(json['id']),
|
||||
role: serializer.fromJson<String?>(json['role']),
|
||||
language: serializer.fromJson<String?>(json['language']),
|
||||
createdAt: serializer.fromJson<DateTime>(json['createdAt']),
|
||||
updatedAt: serializer.fromJson<DateTime>(json['updatedAt']),
|
||||
createdAt: serializer.fromJson<DateTime?>(json['createdAt']),
|
||||
updatedAt: serializer.fromJson<DateTime?>(json['updatedAt']),
|
||||
lastActive: serializer.fromJson<DateTime?>(json['lastActive']),
|
||||
online: serializer.fromJson<bool>(json['online']),
|
||||
banned: serializer.fromJson<bool>(json['banned']),
|
||||
@@ -3880,8 +3880,8 @@ class UserEntity extends DataClass implements Insertable<UserEntity> {
|
||||
'id': serializer.toJson<String>(id),
|
||||
'role': serializer.toJson<String?>(role),
|
||||
'language': serializer.toJson<String?>(language),
|
||||
'createdAt': serializer.toJson<DateTime>(createdAt),
|
||||
'updatedAt': serializer.toJson<DateTime>(updatedAt),
|
||||
'createdAt': serializer.toJson<DateTime?>(createdAt),
|
||||
'updatedAt': serializer.toJson<DateTime?>(updatedAt),
|
||||
'lastActive': serializer.toJson<DateTime?>(lastActive),
|
||||
'online': serializer.toJson<bool>(online),
|
||||
'banned': serializer.toJson<bool>(banned),
|
||||
@@ -3893,8 +3893,8 @@ class UserEntity extends DataClass implements Insertable<UserEntity> {
|
||||
{String? id,
|
||||
Value<String?> role = const Value.absent(),
|
||||
Value<String?> language = const Value.absent(),
|
||||
DateTime? createdAt,
|
||||
DateTime? updatedAt,
|
||||
Value<DateTime?> createdAt = const Value.absent(),
|
||||
Value<DateTime?> updatedAt = const Value.absent(),
|
||||
Value<DateTime?> lastActive = const Value.absent(),
|
||||
bool? online,
|
||||
bool? banned,
|
||||
@@ -3903,8 +3903,8 @@ class UserEntity extends DataClass implements Insertable<UserEntity> {
|
||||
id: id ?? this.id,
|
||||
role: role.present ? role.value : this.role,
|
||||
language: language.present ? language.value : this.language,
|
||||
createdAt: createdAt ?? this.createdAt,
|
||||
updatedAt: updatedAt ?? this.updatedAt,
|
||||
createdAt: createdAt.present ? createdAt.value : this.createdAt,
|
||||
updatedAt: updatedAt.present ? updatedAt.value : this.updatedAt,
|
||||
lastActive: lastActive.present ? lastActive.value : this.lastActive,
|
||||
online: online ?? this.online,
|
||||
banned: banned ?? this.banned,
|
||||
@@ -3948,8 +3948,8 @@ class UsersCompanion extends UpdateCompanion<UserEntity> {
|
||||
final Value<String> id;
|
||||
final Value<String?> role;
|
||||
final Value<String?> language;
|
||||
final Value<DateTime> createdAt;
|
||||
final Value<DateTime> updatedAt;
|
||||
final Value<DateTime?> createdAt;
|
||||
final Value<DateTime?> updatedAt;
|
||||
final Value<DateTime?> lastActive;
|
||||
final Value<bool> online;
|
||||
final Value<bool> banned;
|
||||
@@ -4010,8 +4010,8 @@ class UsersCompanion extends UpdateCompanion<UserEntity> {
|
||||
{Value<String>? id,
|
||||
Value<String?>? role,
|
||||
Value<String?>? language,
|
||||
Value<DateTime>? createdAt,
|
||||
Value<DateTime>? updatedAt,
|
||||
Value<DateTime?>? createdAt,
|
||||
Value<DateTime?>? updatedAt,
|
||||
Value<DateTime?>? lastActive,
|
||||
Value<bool>? online,
|
||||
Value<bool>? banned,
|
||||
|
||||
@@ -15,10 +15,10 @@ class Users extends Table {
|
||||
TextColumn get language => text().nullable()();
|
||||
|
||||
/// Date of user creation
|
||||
DateTimeColumn get createdAt => dateTime().withDefault(currentDateAndTime)();
|
||||
DateTimeColumn get createdAt => dateTime().nullable()();
|
||||
|
||||
/// Date of last user update
|
||||
DateTimeColumn get updatedAt => dateTime().withDefault(currentDateAndTime)();
|
||||
DateTimeColumn get updatedAt => dateTime().nullable()();
|
||||
|
||||
/// Date of last user connection
|
||||
DateTimeColumn get lastActive => dateTime().nullable()();
|
||||
|
||||
@@ -132,7 +132,7 @@ void main() {
|
||||
// Should match lastMessageAt date
|
||||
expect(
|
||||
updatedChannel.lastMessageAt,
|
||||
isSameDateAs(insertedChannel.lastMessageAt!),
|
||||
isSameDateAs(insertedChannel.lastMessageAt),
|
||||
);
|
||||
}
|
||||
});
|
||||
@@ -177,7 +177,7 @@ void main() {
|
||||
// Should match lastMessageAt date
|
||||
expect(
|
||||
updatedChannel.lastMessageAt,
|
||||
isSameDateAs(insertedChannel.lastMessageAt!),
|
||||
isSameDateAs(insertedChannel.lastMessageAt),
|
||||
);
|
||||
}
|
||||
});
|
||||
@@ -220,7 +220,7 @@ void main() {
|
||||
// Should match lastMessageAt date
|
||||
expect(
|
||||
updatedChannel.lastMessageAt,
|
||||
isSameDateAs(insertedChannel.lastMessageAt!),
|
||||
isSameDateAs(insertedChannel.lastMessageAt),
|
||||
);
|
||||
}
|
||||
});
|
||||
|
||||
@@ -66,7 +66,7 @@ void main() {
|
||||
expect(fetchedMember.updatedAt, isSameDateAs(member.updatedAt));
|
||||
expect(
|
||||
fetchedMember.inviteAcceptedAt,
|
||||
isSameDateAs(member.inviteAcceptedAt!),
|
||||
isSameDateAs(member.inviteAcceptedAt),
|
||||
);
|
||||
}
|
||||
});
|
||||
@@ -93,7 +93,7 @@ void main() {
|
||||
expect(fetchedMember.updatedAt, isSameDateAs(member.updatedAt));
|
||||
expect(
|
||||
fetchedMember.inviteAcceptedAt,
|
||||
isSameDateAs(member.inviteAcceptedAt!),
|
||||
isSameDateAs(member.inviteAcceptedAt),
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -37,8 +37,8 @@ void main() {
|
||||
expect(channelModel.updatedAt, isSameDateAs(entity.updatedAt));
|
||||
expect(channelModel.memberCount, entity.memberCount);
|
||||
expect(channelModel.cid, entity.cid);
|
||||
expect(channelModel.lastMessageAt, isSameDateAs(entity.lastMessageAt!));
|
||||
expect(channelModel.deletedAt, isSameDateAs(entity.deletedAt!));
|
||||
expect(channelModel.lastMessageAt, isSameDateAs(entity.lastMessageAt));
|
||||
expect(channelModel.deletedAt, isSameDateAs(entity.deletedAt));
|
||||
expect(channelModel.extraData, entity.extraData);
|
||||
expect(channelModel.createdBy!.id, entity.createdById);
|
||||
});
|
||||
@@ -77,8 +77,8 @@ void main() {
|
||||
expect(channelModel.updatedAt, isSameDateAs(entity.updatedAt));
|
||||
expect(channelModel.memberCount, entity.memberCount);
|
||||
expect(channelModel.cid, entity.cid);
|
||||
expect(channelModel.lastMessageAt, isSameDateAs(entity.lastMessageAt!));
|
||||
expect(channelModel.deletedAt, isSameDateAs(entity.deletedAt!));
|
||||
expect(channelModel.lastMessageAt, isSameDateAs(entity.lastMessageAt));
|
||||
expect(channelModel.deletedAt, isSameDateAs(entity.deletedAt));
|
||||
expect(channelModel.extraData, entity.extraData);
|
||||
expect(channelModel.createdBy!.id, entity.createdById);
|
||||
});
|
||||
@@ -115,8 +115,8 @@ void main() {
|
||||
expect(channelEntity.updatedAt, isSameDateAs(model.updatedAt));
|
||||
expect(channelEntity.memberCount, model.memberCount);
|
||||
expect(channelEntity.cid, model.cid);
|
||||
expect(channelEntity.lastMessageAt, isSameDateAs(model.lastMessageAt!));
|
||||
expect(channelEntity.deletedAt, isSameDateAs(model.deletedAt!));
|
||||
expect(channelEntity.lastMessageAt, isSameDateAs(model.lastMessageAt));
|
||||
expect(channelEntity.deletedAt, isSameDateAs(model.deletedAt));
|
||||
expect(channelEntity.extraData, model.extraData);
|
||||
expect(channelEntity.createdById, model.createdBy!.id);
|
||||
});
|
||||
|
||||
@@ -29,8 +29,8 @@ void main() {
|
||||
expect(member.createdAt, isSameDateAs(entity.createdAt));
|
||||
expect(member.updatedAt, isSameDateAs(entity.updatedAt));
|
||||
expect(member.channelRole, entity.channelRole);
|
||||
expect(member.inviteAcceptedAt, isSameDateAs(entity.inviteAcceptedAt!));
|
||||
expect(member.inviteRejectedAt, isSameDateAs(entity.inviteRejectedAt!));
|
||||
expect(member.inviteAcceptedAt, isSameDateAs(entity.inviteAcceptedAt));
|
||||
expect(member.inviteRejectedAt, isSameDateAs(entity.inviteRejectedAt));
|
||||
expect(member.invited, entity.invited);
|
||||
expect(member.banned, entity.banned);
|
||||
expect(member.shadowBanned, entity.shadowBanned);
|
||||
@@ -59,8 +59,8 @@ void main() {
|
||||
expect(entity.createdAt, isSameDateAs(member.createdAt));
|
||||
expect(entity.updatedAt, isSameDateAs(member.updatedAt));
|
||||
expect(entity.channelRole, member.channelRole);
|
||||
expect(entity.inviteAcceptedAt, isSameDateAs(member.inviteAcceptedAt!));
|
||||
expect(entity.inviteRejectedAt, isSameDateAs(member.inviteRejectedAt!));
|
||||
expect(entity.inviteAcceptedAt, isSameDateAs(member.inviteAcceptedAt));
|
||||
expect(entity.inviteRejectedAt, isSameDateAs(member.inviteRejectedAt));
|
||||
expect(entity.invited, member.invited);
|
||||
expect(entity.banned, member.banned);
|
||||
expect(entity.shadowBanned, member.shadowBanned);
|
||||
|
||||
@@ -96,11 +96,11 @@ void main() {
|
||||
expect(message.updatedAt, isSameDateAs(entity.updatedAt));
|
||||
expect(message.extraData, entity.extraData);
|
||||
expect(message.user!.id, entity.userId);
|
||||
expect(message.deletedAt, isSameDateAs(entity.deletedAt!));
|
||||
expect(message.deletedAt, isSameDateAs(entity.deletedAt));
|
||||
expect(message.text, entity.messageText);
|
||||
expect(message.pinned, entity.pinned);
|
||||
expect(message.pinExpires, isSameDateAs(entity.pinExpires!));
|
||||
expect(message.pinnedAt, isSameDateAs(entity.pinnedAt!));
|
||||
expect(message.pinExpires, isSameDateAs(entity.pinExpires));
|
||||
expect(message.pinnedAt, isSameDateAs(entity.pinnedAt));
|
||||
expect(message.pinnedBy!.id, entity.pinnedByUserId);
|
||||
expect(message.reactionCounts, entity.reactionCounts);
|
||||
expect(message.reactionScores, entity.reactionScores);
|
||||
@@ -191,11 +191,11 @@ void main() {
|
||||
expect(entity.updatedAt, isSameDateAs(message.updatedAt));
|
||||
expect(entity.extraData, message.extraData);
|
||||
expect(entity.userId, message.user!.id);
|
||||
expect(entity.deletedAt, isSameDateAs(message.deletedAt!));
|
||||
expect(entity.deletedAt, isSameDateAs(message.deletedAt));
|
||||
expect(entity.messageText, message.text);
|
||||
expect(entity.pinned, message.pinned);
|
||||
expect(entity.pinExpires, isSameDateAs(message.pinExpires!));
|
||||
expect(entity.pinnedAt, isSameDateAs(message.pinnedAt!));
|
||||
expect(entity.pinExpires, isSameDateAs(message.pinExpires));
|
||||
expect(entity.pinnedAt, isSameDateAs(message.pinnedAt));
|
||||
expect(entity.pinnedByUserId, message.pinnedBy!.id);
|
||||
expect(entity.reactionCounts, message.reactionCounts);
|
||||
expect(entity.reactionScores, message.reactionScores);
|
||||
|
||||
@@ -89,11 +89,11 @@ void main() {
|
||||
expect(message.updatedAt, isSameDateAs(entity.updatedAt));
|
||||
expect(message.extraData, entity.extraData);
|
||||
expect(message.user!.id, entity.userId);
|
||||
expect(message.deletedAt, isSameDateAs(entity.deletedAt!));
|
||||
expect(message.deletedAt, isSameDateAs(entity.deletedAt));
|
||||
expect(message.text, entity.messageText);
|
||||
expect(message.pinned, entity.pinned);
|
||||
expect(message.pinExpires, isSameDateAs(entity.pinExpires!));
|
||||
expect(message.pinnedAt, isSameDateAs(entity.pinnedAt!));
|
||||
expect(message.pinExpires, isSameDateAs(entity.pinExpires));
|
||||
expect(message.pinnedAt, isSameDateAs(entity.pinnedAt));
|
||||
expect(message.pinnedBy!.id, entity.pinnedByUserId);
|
||||
expect(message.reactionCounts, entity.reactionCounts);
|
||||
expect(message.reactionScores, entity.reactionScores);
|
||||
@@ -179,11 +179,11 @@ void main() {
|
||||
expect(entity.updatedAt, isSameDateAs(message.updatedAt));
|
||||
expect(entity.extraData, message.extraData);
|
||||
expect(entity.userId, message.user!.id);
|
||||
expect(entity.deletedAt, isSameDateAs(message.deletedAt!));
|
||||
expect(entity.deletedAt, isSameDateAs(message.deletedAt));
|
||||
expect(entity.messageText, message.text);
|
||||
expect(entity.pinned, message.pinned);
|
||||
expect(entity.pinExpires, isSameDateAs(message.pinExpires!));
|
||||
expect(entity.pinnedAt, isSameDateAs(message.pinnedAt!));
|
||||
expect(entity.pinExpires, isSameDateAs(message.pinExpires));
|
||||
expect(entity.pinnedAt, isSameDateAs(message.pinnedAt));
|
||||
expect(entity.pinnedByUserId, message.pinnedBy!.id);
|
||||
expect(entity.reactionCounts, message.reactionCounts);
|
||||
expect(entity.reactionScores, message.reactionScores);
|
||||
|
||||
@@ -27,7 +27,7 @@ void main() {
|
||||
expect(user.language, entity.language);
|
||||
expect(user.createdAt, isSameDateAs(entity.createdAt));
|
||||
expect(user.updatedAt, isSameDateAs(entity.updatedAt));
|
||||
expect(user.lastActive, isSameDateAs(entity.lastActive!));
|
||||
expect(user.lastActive, isSameDateAs(entity.lastActive));
|
||||
expect(user.online, entity.online);
|
||||
expect(user.banned, entity.banned);
|
||||
expect(user.extraData, entity.extraData);
|
||||
@@ -52,7 +52,7 @@ void main() {
|
||||
expect(entity.language, user.language);
|
||||
expect(entity.createdAt, isSameDateAs(user.createdAt));
|
||||
expect(entity.updatedAt, isSameDateAs(user.updatedAt));
|
||||
expect(entity.lastActive, isSameDateAs(user.lastActive!));
|
||||
expect(entity.lastActive, isSameDateAs(user.lastActive));
|
||||
expect(entity.online, user.online);
|
||||
expect(entity.banned, user.banned);
|
||||
expect(entity.extraData, user.extraData);
|
||||
|
||||
@@ -1,21 +1,22 @@
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
|
||||
Matcher isSameDateAs(DateTime targetDate) =>
|
||||
Matcher isSameDateAs(DateTime? targetDate) =>
|
||||
_IsSameDateAs(targetDate: targetDate);
|
||||
|
||||
class _IsSameDateAs extends Matcher {
|
||||
const _IsSameDateAs({required this.targetDate});
|
||||
|
||||
final DateTime targetDate;
|
||||
final DateTime? targetDate;
|
||||
|
||||
@override
|
||||
bool matches(covariant DateTime date, Map matchState) =>
|
||||
date.year == targetDate.year &&
|
||||
date.month == targetDate.month &&
|
||||
date.day == targetDate.day &&
|
||||
date.hour == targetDate.hour &&
|
||||
date.minute == targetDate.minute &&
|
||||
date.second == targetDate.second;
|
||||
bool matches(covariant DateTime date, Map matchState) {
|
||||
return date.year == targetDate?.year &&
|
||||
date.month == targetDate?.month &&
|
||||
date.day == targetDate?.day &&
|
||||
date.hour == targetDate?.hour &&
|
||||
date.minute == targetDate?.minute &&
|
||||
date.second == targetDate?.second;
|
||||
}
|
||||
|
||||
@override
|
||||
Description describe(Description description) =>
|
||||
|
||||
Reference in New Issue
Block a user