toString method
A string representation of this object.
Some classes have a default textual representation,
often paired with a static parse function (like int.parse).
These classes will provide the textual representation as
their string representation.
Other classes have no meaningful textual representation
that a program will care about.
Such classes will typically override toString to provide
useful information when inspecting the object,
mainly for debugging or logging.
Implementation
@override
String toString() {
final buffer = StringBuffer('SyncStatus<');
var first = true;
void addProperty(String name, Object? value) {
if (!first) {
buffer.write(' ');
}
buffer.write('$name: $value');
first = false;
}
if (connected) {
addProperty('connected', connected);
} else if (connecting) {
addProperty('connected', 'connecting');
} else {
addProperty('connected', 'offline (not connecting)');
}
addProperty('downloading', '$downloading (progress: $downloadProgress)');
addProperty('uploading', uploading);
addProperty('lastSyncedAt', lastSyncedAt);
addProperty('hasSynced', hasSynced);
if (downloadError case final downloadError?) {
addProperty('downloadError', downloadError);
}
if (uploadError case final uploadError?) {
addProperty('uploadError', uploadError);
}
if (downloadError == null && uploadError == null) {
addProperty('error', null);
}
buffer.write('>');
return buffer.toString();
}