encodeWithDifference method

dynamic encodeWithDifference()

Encode state and return difference from initial state.

Implementation

dynamic encodeWithDifference() {
  final state = encode();
  switch (state) {
    case Map<String, dynamic> map:
      final initialState = initialSerializedState as Map<String, dynamic>;
      final difference = initialState.difference(map);
      if (difference.isEmpty) return null;

      return difference;

    case Object value when initialSerializedState != value:
      return value;

    default:
      return null;
  }
}