setWithBatch method

  1. @protected
Future<void> setWithBatch({
  1. required ProviderModelBatch batch,
  2. Map<String, Object?>? properties,
  3. Map<String, Object?>? data,
  4. Map<Type, Map<String, Object?>>? overrideProperties,
})

Sets the properties and arbitrary data using the provided ProviderModelBatch.

Implementation

@protected
Future<void> setWithBatch({
  required ProviderModelBatch batch,
  Map<String, Object?>? properties,
  Map<String, Object?>? data,
  Map<Type, Map<String, Object?>>? overrideProperties,
}) async {
  _logger.fine('set:$properties, $data');

  if (properties != null) {
    final tProperties = batch.get(_properties);
    final tNewProperties = _CompareMap(tProperties);
    tNewProperties.addAll(properties);
    batch.set(_properties, tNewProperties);
  }

  if (data != null) {
    final tData = batch.get(_data);
    final tNewData = _CompareMap(tData);
    tNewData.addAll(data);
    batch.set(_data, tNewData);
  }

  if (overrideProperties != null) {
    for (var i in overrideProperties.entries) {
      _propertiesOverrides[i.key] ??= _CompareMap();
      _propertiesOverrides[i.key]!.addAll(i.value);
    }
  }

  await _runSynchronousChangeListeners(batch);

  try {
    await app.remoteConfig.fetch(force: batch.get(_id) != _id.unsafeValue);
  } catch (e, stackTrace) {
    _logger.info('Failed to refresh RemoteConfig.', e, stackTrace);
  }
}