changeIdWithBatch method
Sets the user's id and various values using the provided ProviderModelBatch.
Implementation
@protected
Future<void> changeIdWithBatch({
required ProviderModelBatch batch,
required String? id,
Map<String, Object?>? properties,
Map<String, Object?>? data,
Map<Type, String?>? overrideId,
Map<Type, Map<String, Object?>>? overrideProperties,
}) async {
_logger.fine('changeId:$id, $properties, $data');
batch.set(_id, id);
_idOverrides.clear();
if (overrideId != null) {
for (var i in overrideId.entries) {
_idOverrides[i.key] = i.value;
}
}
// notify listeners to remove old properties.
final tOldProperties = {for (var i in batch.get(_properties).keys) i: null};
final tProperties = _CompareMap(tOldProperties);
if (properties != null) {
tProperties.addAll(properties);
}
batch.set(_properties, tProperties);
if (data != null) {
batch.set(_data, _CompareMap(data));
}
_propertiesOverrides.clear();
if (overrideProperties != null) {
for (var i in overrideProperties.entries) {
_propertiesOverrides[i.key] ??= _CompareMap();
_propertiesOverrides[i.key]!.addAll(i.value);
}
}
await _runSynchronousChangeListeners(batch);
await app.remoteConfig.fetch(force: true);
}