toString method

  1. @override
String toString()
override

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();
}