// ignore_for_file: public_member_api_docs part of 'provider.dart'; void Function( String eventKind, Map event, )? _debugPostEventOverride; void debugPostEvent( String eventKind, [ Map event = const {}, ]) { if (_debugPostEventOverride != null) { _debugPostEventOverride!(eventKind, event); } else { developer.postEvent(eventKind, event); } } PostEventSpy spyPostEvent() { assert(_debugPostEventOverride == null, 'postEvent is already spied'); final spy = PostEventSpy._(); _debugPostEventOverride = spy._postEvent; return spy; } @protected class PostEventCall { PostEventCall._(this.eventKind, this.event); final String eventKind; final Map event; } @protected class PostEventSpy { PostEventSpy._(); final logs = []; void dispose() { assert( _debugPostEventOverride == _postEvent, 'disposed a spy different from the current spy', ); _debugPostEventOverride = null; } void _postEvent( String eventKind, Map event, ) { logs.add(PostEventCall._(eventKind, event)); } } @immutable class ProviderNode { const ProviderNode({ required this.id, required this.childrenNodeIds, required this.type, required _InheritedProviderScopeElement element, }) : _element = element; final String id; final String type; final List childrenNodeIds; final _InheritedProviderScopeElement _element; Object? get value => _element._delegateState.value; } @protected class ProviderBinding { ProviderBinding._(); static final debugInstance = kDebugMode ? ProviderBinding._() : throw UnsupportedError('Cannot use ProviderBinding in release mode'); Map _providerDetails = {}; Map get providerDetails => _providerDetails; set providerDetails(Map value) { debugPostEvent('provider:provider_list_changed', {}); _providerDetails = value; } void providerDidChange(String providerId) { debugPostEvent( 'provider:provider_changed', {'id': providerId}, ); } }