mergeProviderData function

Map<String, dynamic> mergeProviderData(
  1. Map<String, dynamic> first,
  2. Map<String, dynamic> second
)

Deeply merges namespaced provider data, with later values taking priority.

Implementation

Map<String, dynamic> mergeProviderData(
  final Map<String, dynamic> first,
  final Map<String, dynamic> second,
) {
  final merged = <String, dynamic>{...first};
  for (final entry in second.entries) {
    final previous = merged[entry.key];
    final next = entry.value;
    merged[entry.key] =
        previous is Map<String, dynamic> && next is Map<String, dynamic>
        ? mergeProviderData(previous, next)
        : next;
  }
  return merged;
}